使用python进行接口的多关联测试(Python接口测试之mock六)

使用python进行接口的多关联测试(Python接口测试之mock六)(1)

什么是mock?mock简单的理解就是开发在开发的过程中,需要依赖一部分的接口,但是对方没有提供或者环境等等情况,总之是没有,那么开发使用mockserver自己来mock数据,方便自己正常的进行开发和对编写的功能进行自测。

我们先看之前的mock-server部分,之前编写了一个登录的mock,具体json文件见如下的内容:

[

{

"request":

{

"method":"post",

"uri":"/login",

"json":

{

"username":"admin",

"password":"admin",

"roleID":22

}

},

"response":

{

"json":

{

"username":"chuansinfo",

"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":"chuansinfo",

"userID":22,

"token":"asdgfhh32456asfgrsfss"

}

执行login.json文件后,访问该接口,看是否OK,见执行login.json文件的命令:

使用python进行接口的多关联测试(Python接口测试之mock六)(2)

使用postman查看该接口,看是否OK,见如下的截图:

使用python进行接口的多关联测试(Python接口测试之mock六)(3)

下面我们再进行一个业务,就是输入一个车牌号,查询该车牌号的显示时长,和它的停车费用,直接在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":"chuansinfo",

"vpl":"京AJ3585"

},

"Parking time long":"20小时18分钟",

"Parking fee":"20$"

}

见查询停车时长的接口请求的结果,见如下的postman截图:

使用python进行接口的多关联测试(Python接口测试之mock六)(4)

下面我们通过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'],'chuansinfo')

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)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页