新建一个需要测试的接口类 http_request.py 文件
首先需要导入 requests库
函数参数存放测试数据传入的参数,有url,data,请求方式及cookie
如果请求方式是get则进行调用requests库中的get方法,如果是post则调用post方法,反之不支持
import requests
class HttpRequest:
def http_request(self,url,data,method,cookie):
if method.lower()=='get':
res=requests.get(url,method,data=None,cookies=cookie)
elif method.lower()=='post':
res=requests.post(url,data,method,cookies=cookie)
else:
print("暂时不支持此请求方式")
return res
建一个测试用例类 test_http.py 文件
导入unittest库,继承其中的TestCase方法,Testsuit方法等
import unittest
from class_0416.http_request import HttpRequest
from class_0415.class_GetData import GetData
class TestHttp(unittest.TestCase):#创建类,继承unittest的TestCase的方法
def setUp(self):#执行用例前首先执行此函数下的内容与teardown函数对应
pass
def __init__(self,methodName,url,data,method,expected):
super(TestHttp,self).__init__(methodName)#超继承,既继承了父类的初始化函数,又不影响重写
self.url=url #重写的url,以下相似
self.data=data
self.method=method
self.expected=expected
def test_api(self): #接口测试用例
res=HttpRequest().http_request(self.url,self.data,self.method,getattr(GetData,'cookie'))#调用导入的需要测试的接口包,调用其中的函数,包含传参,参数需要self,cookie是反射的用法,需要在新建一个类名为GetData的方法,设置cookie字段为None
if res.cookies:#如果存在cookie,就位true,执行以下语句
setattr(GetData,'cookie',res.cookies)#反射,将cookie的值赋值在GetData中的cookie
try:#捕获异常
self.assertEqual(self.expected,res.json()['status'])#self.expected为测试数据中的数据,与json返回的status字段做比较,如果一致,测试通过
except AssertionError as e:
print("test_api 's 错误是:{0}".format(e))
raise e#释放异常
执行用例以及存放测试数据的方法 test_suit.py 文件
import unittest
from class_0416.test_http import TestHttp
from tools import HtmlTestRunner
'''测试数据,千万注意大括号的位置'''
test_data=[{"url":"https://www.ketangpai.com/UserApi/login",
"data":{"email":"183XXXXXXXX","password":"00XXXXXXXX"},
"expected":1,
"method":"post"},
{"url":"https://www.ketangpai.com/UserApi/getUserInfo",
"data":{},
"expected":1,
"method":"get"}]
suite=unittest.TestSuite() #创建一个容器
for item in test_data: #循环执行以下加载测试用例的方法
suite.addTest(TestHttp("test_api",item['url'],item['data'],item['method'],item['expected']))# test_api 是测试用例的函数名
with open("TestSummer.html","wb") as file:#创建文件,不要忘了用wb方式创建
runner=HtmlTestRunner.HTMLTestRunner(stream=file, verbosity=2, title="TestSummerReport", description=None)#文件的具体展示
runner.run(suite)#执行用例