安装BeautifulReport库
pip install BeautifulReport
安装ddt库
pip install ddt
1,修改ddt.py
def wrapper(cls):
for name, func in list(cls.__dict__.items()):
if hasattr(func, DATA_ATTR):
index_len = getattr(func, INDEX_LEN)
for i, v in enumerate(getattr(func, DATA_ATTR)):
test_name = mk_test_name(
name,
getattr(v, "__name__", v),
i,
index_len,
fmt_test_name
)
#test_data_docstring = _get_test_data_docstring(func, v)
#用例描述改为用例名称
test_data_docstring = v['caseName']
if hasattr(func, UNPACK_ATTR):
if isinstance(v, tuple) or isinstance(v, list):
add_test(
cls,
test_name,
test_data_docstring,
func,
*v
)
...
2,测试用例
import unittest, ddt
# ddt 传入参数caseNum为参数值,caseName为用例描述
datalist = [{'caseNum': 'case001', 'caseName': '用例一'}, {'caseNum': 'case002', 'caseName': '用例二'}]
@ddt.ddt
class UserTestCase(unittest.TestCase):
# 所有类中方法的入参为self,定义方法的变量也要self.变量
def setUp(self):
print("set up 开始")
def tearDown(self):
print("tearDown 执行结束")
print('\n')
@ddt.data(*datalist)
def testCase1(self, data):
print(data)
if __name__ == '__main__':
unittest.main()
3,生成测试报告
import unittest
from BeautifulReport import BeautifulReport #导入BeautifulReport
if __name__ == '__main__':
suite_tests = unittest.defaultTestLoader.discover(".", pattern="*tests.py", top_level_dir=None) #"."表示当前目录,"*tests.py"匹配当前目录下所有tests.py结尾的用例
BeautifulReport(suite_tests).report(filename='测试报告', description='测试', log_path='.') #log_path='.'把report放到当前目录下
yaml 读取参数
import unittest, ddt
import yaml
# ddt 传入参数caseNum为参数值,caseName为用例描述
#datalist = [{'caseNum': 'case001', 'title': '用例一'}, {'caseNum': 'case002', 'title': '用例二'}]
# 读取yaml文件
def read_yaml():
with open(r'C:\Users\Administrator\PycharmProjects\pythonProject7\test\test1.yml', 'r', encoding='utf-8') as f:
file_content = f.read()
datalist = yaml.load(file_content, yaml.FullLoader)
return datalist
@ddt.ddt
class UserTestCase(unittest.TestCase):
# 所有类中方法的入参为self,定义方法的变量也要self.变量
def setUp(self):
print("set up 开始")
def tearDown(self):
print("tearDown 执行结束")
print('\n')
@ddt.data(*read_yaml())
def testCase3(self, data):
print(data)
if __name__ == '__main__':
unittest.main()
import unittest
from BeautifulReport import BeautifulReport #导入BeautifulReport
if __name__ == '__main__':
suite_tests = unittest.defaultTestLoader.discover(".", pattern="*tests.py", top_level_dir=None) #"."表示当前目录,"*tests.py"匹配当前目录下所有tests.py结尾的用例
BeautifulReport(suite_tests).report(filename='测试报告', description='测试', log_path='.') #log_path='.'把report放到当前目录下
-
title: 用例一
caseNum: 123
-
title: 用例二
caseNum: 233
读取yaml
import yaml
with open(r'C:\Users\Administrator\PycharmProjects\pythonProject7\test\test1.yml', 'r', encoding='utf-8') as f:
file_content = f.read()
content = yaml.load(file_content, yaml.FullLoader)
print(type(content))