接口测试--mock
在现在的软件开发过程中,特别是app的部分,需要的很多数据以及内容,都是来自server端的API,但是不能保证在客户端开发的时候,api在server端已经开发完成,专门等着前端来调用,理想的情况就是前端在开发的时候,已经有人写好了接口,直接调用就ok,但是整个是理想的状态,如果在前端开发的时候,提供api的同学没有提供,那么,这个时候就需要我们mock数据了
什么是mock:
mock就是开发在开发的过程中需要依赖一部分的接口,但是对方没有提供或者环境等等情况,总之是没有,那么开发使用mock server自己类mock数据,方便自己正常的进行开发和对编写的功能进行自测
mock数据的具体步骤:
(1)在https://github.com/dreamhead/moco地址中可以下载moco-runner-0.11.0-standalone.jar
(2)编写login.json
(3)运行这个包
java -jar moco-runner-0.10.0-standalone.jar http -p 12306 -c login.json
(注意:mock server和编写的login.json文件是在同一个目录下,-p:是指定端口 -c 是指定文件)
(4)我们使用postman 来验证下 我们mock的登录接口是不是ok
(5)我们再使用python编写一个接口测试用例,来验证换这个登录的接口和获取它的token,来实现的代码
下来我们编写一个登录和一个业务的(就是输入一个车牌号,查询该车牌号的显示时长,和它的停车费用)的json文件
[ { "request": { "method":"post", "uri":"/login", "json": { "username":"admin", "password":"admin", "roleID":22 } }, "response": { "file":"login_response.json" } }, { "request": { "method":"post", "uri":"/parkinside", "json": { "token":"asdgfhh32456asfgrsfss", "vpl":"AJ3585" } }, "response": { "file":"parkinside.json" } } ] ]

登录页面的响应数据:login_response.json
{ "username":"wuya", "userID":22, "token":"asdgfhh32456asfgrsfss" }
业务面的响应数据:parkinside.json
{ "vplInfo": { "userID":22, "username":"wuya", "vpl":"京AJ3585" }, "Parking time long":"20小时18分钟", "Parking fee":"20$" }
运行包:
java -jar moco-runner-1.3.0-standalone.jar http -p 12306 -c login.json
(注意:mock server和编写的login.json文件是在同一个目录下,-p:是指定端口 -c 是指定文件)

下来我们使用postman来验证下,我们mock的登录接口和业务接口是不是OK的


我们使用python编写一个接口测试用例,来验证换这个登录的接口和获取它的token,见实现的代码:
#!/usr/bin/env python # -*- coding:utf-8 -*- # !/usr/bin/env python # -*- coding:utf-8 -*- import unittest import requests class MockTest(unittest.TestCase): def setUp(self): self.url = 'http://localhost:12306' def tearDown(self): pass def test_login(self, url='/login'): '''验证登录的接口''' data = { "username": "admin", "password": "admin", "roleID": 22 } r = requests.post(self.url + url, json=data) self.assertEqual(r.status_code, 200) self.assertEqual(r.json()['username'], 'wuya') def getToken(self, url='/login'): '''登录成功后获取token''' data = { "username": "admin", "password": "admin", "roleID": 22 } r = requests.post(self.url + url, json=data) return r.json()['token'] def test_parkingside(self, url='/parkinside'): '''验证查询停车时长接口''' data = { "token": self.getToken(), "vpl": "AJ3585" } r = requests.post(self.url + url, json=data) self.assertEqual(r.status_code, 200) self.assertEqual(r.json()['Parking time long'], u'20小时18分钟') self.assertEqual(r.json()['Parking fee'], u'20$') if __name__ == '__main__': unittest.main(verbosity=2)

浙公网安备 33010602011771号