什么是mock?
mock就是开发在开发的过程中需要依赖一部分的接口,但是对方没有提供或者环境等等情况,总之是没有,那么开发使用mock server自己类mock数据,方便自己正常的进行开发和对编写的功能进行自测。
在现在的软件开发过程中,特别是app的部分,需要的很多数据以及内容,都是来自server端的API,但是不能保证在客户端开发的时候,api在server端已经开发完成,专门等着前端来调用。
理想的情况就是前端在开发的时候,已经有人写好了接口,直接调用就ok,但是整个是理想的状态,如果在前端开发的时候,提供api的同学没有提供,那么,这个时候就需要我们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。
实现代码:
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)
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
只要你不停地前进,每一步都是通向成功的阶梯。相信自己的能力,坚持奋斗,你将收获理想与成就。无论路途多么艰辛,只要拥抱梦想,你便能翱翔于人生的广阔天空。
只要心怀梦想,坚持努力,任何困难都不足惧。每一次汗水的流淌,都是迈向成功的一步。相信自己,勇往直前,无所不能!
只要有决心,就没有攀不越的高山;只要有毅力,就没有跨不过的沟壑;只要有勇气,就没有战胜不了的困难。相信自己,奋斗不息,成功必将属于你!