在http://www.cnblogs.com/weke/articles/6859021.html中对mock-server已经做了
初步的介绍,今天这里继续接着之前的介绍进行,我们先看之前的mock-server部分,之前编写
了一个登录的mock,具体json文件见如下的内容:
[ { "request": { "method":"post", "uri":"/login", "json": { "username":"admin", "password":"admin", "roleID":22 } }, "response": { "json": { "username":"wuya", "userID":22, "token":"asdgfhh32456asfgrsfss" } } } ]
查看上面的内容,我们可以看出,这样的方式并不是那么的友好,在UI或者接口的自动化测试中,我们知道在
TDD的模式中,对数据进行分离,这样也是为了维护的方便,这样的目的是为了后期自动化测试用例的扩展性,
和它的易维护性,那么下来我们来对上面的json文件进行修改下,对response部分的数据进行分离下,把它
放在一个文件中,这样就可以分离了出来,我们把response的内容从login.json分离到login_response.json
切记login.json与login_response.json务必保持在同一个目录下,见login.json的内容:
[ { "request": { "method":"post", "uri":"/login", "json": { "username":"admin", "password":"admin", "roleID":22 } }, "response": { "file":"login_response.json" } } ]
见login_response.json文件的内容:
{ "username":"wuya", "userID":22, "token":"asdgfhh32456asfgrsfss" }
执行login.json文件后,访问该接口,看是否OK,见执行login.json文件的命令:
使用postman查看该接口,看是否OK,见如下的截图:
下面我们再进行一个业务,就是输入一个车牌号,查询该车牌号的显示时长,和它的停车费用,直接在loginjson
文件中完善,见完善后的内容:
[ { "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" } } ]
见parkinside.json文件的内容:
{ "vplInfo": { "userID":22, "username":"wuya", "vpl":"京AJ3585" }, "Parking time long":"20小时18分钟", "Parking fee":"20$" }
见查询停车时长的接口请求的结果,见如下的postman截图:
下面我们通过python语言,来对如上的二个接口进行实战的操作,切记parkinside的接口是在登录之后才可以操作的业务,未登录操作该业务,返回502无效的
token,见实现的代码:
#!/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)
转载地址:http://www.cnblogs.com/weke/articles/6941884.html