前言——Python+unittest+requests+HTMLTestRunne完整搭建
一、unittest是什么?
unittest是Python中的单元测试框架。它拥有支持共享搭建、自动测试、在测试中暂停代码、将不同测试迭代成一组。
二、完整的框架搭建
1.引入库
代码如下(示例):
from common.configHttp import RunMain
from common.heapcase import Heapcase #此处为自己封装的一些辅助方法,后续会讲到
from readExcel import HandleExcel
import json
import unittest
import paramunittest
2.框架代码
代码如下(示例):
sheet = '用户' # 通过变量sheet来选择要执行的用例
login_xls = HandleExcel().get_xls('userCase01.xlsx', sheet)
@paramunittest.parametrized(*login_xls)
class testUserLogin(unittest.TestCase):
def setParameters(self, case_name, apitype, url, method, headers, params, expectValue, resultValue, run):
self.case_name = str(case_name)
self.apitype = str(apitype)
self.url = str(url)
self.method = str(method)
self.headers = str(headers)
self.params = str(params)
self.expectValue = str(expectValue)
self.resultValue = str(resultValue)
self.run = str(run)
def description(self):
self.case_name
def setUp(self):
"""
方法名固定,在每个测试函数执行前,执行一次,多个测试函数,执行多次
一般做初始化工作, 比如: 实例化一个浏览器、浏览器最大化、隐式等待设置等需要提前的操作
:return:
"""
print(self.case_name + "≮" + self.apitype + "≯" + "测试开始前准备")
def test01case(self):
self.checkResult()
def tearDown(self):
"""
方法名固定,在每个测试函数执行后,执行一次
一般做结束工作: 比如: 推出浏览器、关闭浏览器
:return:
"""
print("测试结束,输出log完结\n\n")
def checkResult(self):
if self.run == "Y":
token = Heapcase().get_token(13111111113)
Headers = {"Content-Type": "application/json","authorization": token} # 通过自己封装的方法获取token并合拼带headers中
# 读取Excel表格参数内容
case_name = json.loads(self.case_name)
method = self.method
url = self.url
# 判断请求的接口是否有headers和data
if self.headers == '':
header = None
else:
header = Headers
if self.params == "":
body_data = None
else:
body_data = json.loads(self.params)
res = RunMain().run_main(method, url, body_data, headers=header)
# 对返回的参数进行断言(目前取返回的codo值断言,是不严谨的)
expectValue = json.loads(self.expectValue)
try:
self.assertEqual(res['code'], expectValue)
HandleExcel().write_list_to_xls('userCase01.xlsx', sheet, case_name, 7, 'PASS', 7) # 测试通过后将结果写入Excel表格
print("\033[36;0m测试通过\033[0m")
except BaseException as e:
HandleExcel().write_list_to_xls('userCase01.xlsx', sheet, case_name, 7, 'Fail', 2) # 测试失败后将结果写入Excel表格
print("\033[31;0m测试未通过,断言错误:\033[0m" + str(e))
self.assertEqual(res['code'], expectValue)
return res
else:
print("\033[33;0m该条用例开关未打开\033[0m")
下面这个链接是关于unittest的单独讲解
总结
以上就是本次的讲解,如果大家有什么其他的想法可以一起学习,感谢…