第七章:MOCK接口框架的应用实战

写在前面:很机械的学完第六章,报错很多,每解决一个问题虽然都能很开心,但是又不懂为什么。第六章到最后了一直无法实现***,心态很崩。。。后面完全实现了再补博客,第七章比较容易敲,但是不会用哈哈哈哈(悲伤T~T)。
一:什么是mock接口测试?
Mock:模拟的、仿制的、虚假的。
Mock测试:在测试过程中,对于某些不容易构造或者不容易获取的对象,可以用一个虚拟的对象来代替的测试方法。
接口Mock测试:在接口测试过程中,对于某些不容易构造或者不容易获取的接口,可以用一个模拟接口来代替。
Mock平台应该具备哪些功能:Get,post,重定向,意味着是一个产出,不仅意味着可以给测试,还可以给前端使用(当前后端分离开发,后端开发未结束,前端需要调用后端的接口进行调试时,需要模拟一个接口给前端使用)。
二:实现方式
使用mock框架搭建mock服务,本次学习的是使用Moco框架。
Moco框架可以完全模拟http协议。
首先下载并调用moco-runner-1.1.0-standalone.jar
在terminal中进入配置的文件,再输入:
java -jar ./moco-runner-0.11.0-standalone.jar http -p 8899 -c startupwithRedirect.json
//java -jar ./ 后面接下载下来的moco jar包, 再接http -p 端口号,再接-c json配置文件全称。
这里学了一个新概念,热部署:服务不用停止就能完成升级的操作。更改json文件时候,更改后不用重新启动就能实现。
三:具体的json编写。
(json是啥?)
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
以下每一段都是一个新的json文件。
1:浏览器输入:localhost:8899/demo
即能出现text中的“第一个mock框架demo”,8899是前面设置的端口号。
startup1.json

[
  {
    "description": "这是我们的第一个mock例子",
    "request": {
      "uri": "/demo"
    },
    "response": {
      "text": "第一个mock框架demo"
    }

  }
]

2:实现get请求和带参数的get请求。
当访问的时候,没有参数的输入是:localhost:8899/getdemo
有参数时候的输入是:localhost:8899/getwithparam?name=huhuhu&sex=woman
页面即能出现"text"中的文本。
startupGet.json

[
  {
    "description": "这是一个不带参数的get请求",
    "request": {
      "uri": "/getdemo",
      "method": "get"
    },
    "response": {
      "text": "实现不带参数的get请求"
    }
  },
  {
    "description": "这是一个带参数的get请求",
    "request": {
      "uri": "/getwithparam",
      "method": "get",
      "queries": {
        "name": "huhuhu",
        "age": "18"
      }
    },
    "response": {
      "text": "实现带参数的get请求~~~"
    }
  }
]

3:实现post和带参数的post请求
检验是否配置成功时候,不能在网页中输入了,因为是post的请求,应该使用jmeter
创建线程组,创建一个http的post请求,察看结果树。
当有参数时候,需要在参数栏目添加参数。

[
  {
    "description": "这是一个没有参数的post请求",
    "request": {
      "uri": "/postdemo",
      "method": "post"
    },
    "response": {
      "text": "这是我实现的没有参数的post请求!"
    }
  },
  {
    "description": "带参数的post请求",
    "request": {
      "uri": "/postwithparam",
      "method": "post",
      "forms": {
        "name": "huhuhu",
        "sex": "woman"
      }
    },
    "response": {
      "text": "带参数的post!~"
    }
  }
]

4:实现带cookies的post请求
cookies是什么?
服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。
是在jmeter里进行测试,要设定一个cookies管理器,添加名字和域名等等

[
  {
    "description": "这是一个带cookies的get请求",
    "request": {
      "uri": "/get/with/cookies",
      "method": "get",
      "cookies": {
        "login": "true"
      }
    },
    "response": {
      "text": "这是一个需要携带cookies信息才能访问的get请求"
    }
  },
  {
    "description": "这是一个带cookies的post请求",
    "request": {
      "uri": "/post/with/cookies",
      "method": "post",
      "cookies": {
        "login": "true"
      },
      "json": {
        "name": "huhuhu",
        "age": "18"
      }
    },
    "response": {
      "status": 200,
      "json": {
        "huhuhu": "success",
        "18": "alsosuccess",
        "status": "1"
      }
    }
  }
]

5:实现带header的post请求
信息头是什么?
HTTP信息头管理器在Jmeter的使用过程中起着很重要的作用,通常我们在通过Jmeter向服务器发送http请求(get或者post)的时候,往往后端需要一些验证信息,比如说web服务器需要带过去cookie给服务器进行验证,一般就是放在请求头(header)中,因为对于此类请求,在Jmeter中就可以通过HTTP信息头管理器,在添加http请求之前,添加一个HTTP信息头管理器,发请求头中的数据通过键值对的形式放到HTTP信息头管理器中。在往后端请求的时候就可以模拟web携带header信息了。

要在消息数据体中添加
{
** "name":"wangxixi",**
** "sex":"man"**
** }**
且添加信息头管理器

[
  {
    "description": "这是第一个带header的post请求",
    "request": {
      "uri": "/post/with/headers",
      "method": "post",
      "headers": {
        "content-type":"application/json"
      },
      "json": {
        "name": "wangxixi",
        "sex": "man"
      }
    },
    "response": {
      "json":{
        "wangxixi": "success",
        "status": 1
      }
    }

  }
]

6:实现重定向

[
  {
    "description": "重定向到百度",
    "request": {
      "uri": "/redirect"
    },
    "redirectTo": "http://www.baidu.com"
  },
  {
    "description": "重定向到一个自己得网页",
    "request": {
      "uri": "/redirect/topath"
    },
    "redirectTo": "/redirect/new"

  },
  {
    "description": "这是被重定向到得请求",
    "request": {
      "uri": "/redirect/new"
    },
    "response": {
      "text": "成功重定向辣~"
    }
  }
]
全部评论

相关推荐

10-19 10:28
已编辑
成都理工大学 后端工程师
团孝子已上线feeling:面了很多家公司,能感受到目前只有小公司+外包喜欢问八股。大厂虽然也问八股,但是是从实习、项目中进行提问,并且大厂会问很深,面试官也会对你的回答进行思考➕追问,所以准备大厂面试前一定要备好相关资料。对于算法,我做的是codetop前100+力扣hot100+力扣高频150,面试中实感hot100就足够,基本上只要是hot100就秒答。对于项目和八股,我做的也是烂大街的星球项目,八股则是看小林和问ai,自己也写了很多技术博客和画了很多思维导图,并且自己也尝试用嘴巴说出来,不只停留于纸面。运气也很重要,必须要让面试官/HR看到简历才行,所以建议投递时间是下午两点。tl:第一岗位9.9 投递9.10 一面(一面评价:最近见过最强的大三,结束五分钟后约二面,都晚上九点了不下班吗)9.11 二面(三道算法a出两道,反问评价:经验不够等横向,我实习生要啥经验)9.21挂(实习时间过短+其他原因,想要一年实习的,为什么不招个正职)第二岗位10.10投递10.11约面(主管打电话,说看到我之前投递记录了想要我挂qa职进去干后端,同意)10.14 一面(无八股,主动说确实很强,意愿很强)10.16 oc其余,友邦,东软,东华,惠择,用友oc已拒京东测开一面挂(投后端被测开捞)腾讯测试已拒(投后端被测开捞)ps:表扬惠择的主管面,没怎么问技术(可能是一面面试官沟通过了),全程一起讲大道理,解答了心中很多疑惑,也告诉我以面试官角度来看怎么选候选人,如果可以下次一定选惠择
HeaoDng:美团好像可以触发一面通
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务