先写一个运行接口测试的主方法
import requests
import json
class RunMain:
def send_get(self, url, data):
res = requests.get(url=url, data=data).json()
return json.dumps(res, indent=2, sort_keys=True)
def send_post(self, url, data):
res = requests.post(url=url, data=data).json()
return json.dumps(res, indent=2, sort_keys=True)
def run_main(self, url, method, data=None):
res = None
if method == 'GET':
res = self.send_get(url, data)
else:
res = self.send_post(url, data)
return res
如上只需传入对应参数调用此方法,那么我们如何将requests与unittest结合起来呢?
首先需要把对应模块导入进来
# manage需要导入的模块
from base.manage import RunMain
然后在unittest中实例化类,case中执行用例,传入参数执行
# coding:utf-8
import unittest
from base.manage import RunMain
class TestMethod(unittest.TestCase):
def setUp(self):
#实例化类
self.run = RunMain()
def test_01(self):
url = 'https://tapi.eyxyt.net/parkopening/backstage/v1/mgr/login'
data = {
'mobile': '159*****455',
'password': 'e10adc3949ba59abbe56e057f20f883e'
}
res = self.run.run_main(url, 'POST', data)
print(res)
def test_02(self):
url = 'https://tapi.eyxyt.net/parkopening/backstage/v1/mgr/login'
data = {
'mobile': '159******456',
'password': 'e10adc3949ba59abbe56e057f20f883e'
}
res = self.run.run_main(url, 'POST', data)
print(res)
if __name__ == '__main__':
unittest.main()
运行结果:
运行结果.png
当执行case足够多的时候,我们要怎么去检查用例的返回结果是否正确?这就要用到unitest的assert了,
常用的assertEqual传入三个参入,第一个参数与第二的参数,第三个参数可以省略,第四个参数"如果第一、第二个参数不相等,则返回...."
assertEqual判断.png
如在case里面加上断言:
def test_01(self):
url = 'https://tapi.eyxyt.net/parkopening/backstage/v1/mgr/login'
data = {
'mobile': '159*****455',
'password': 'e10adc3949ba59abbe56e057f20f883e'
}
res = self.run.run_main(url, 'POST', data)
#将返回值转换为字典类型
res_a=json.loads(res)
self.assertEqual(res_a['code'],200,'测试失败')
备注:如果res_a['code'] !=200,则测试失败
网友评论