使用第三方的报告模版,生成报告 HTMLTestReport, 本质是 TestRunner
- 安装
pip install HTMLTestReport
- 使用
1. 导包 unittest、HTMLTestReport
2. 组装用例(套件, loader )
3. 使用 HTMLTestReport 中的 runner 执行套件
4. 查看报告
目录结构:
app.py:
import os
Base_Dir = os.path.dirname(__file__)
print(Base_Dir)
tools.py:
def login(username, password):
if username == 'admin' and password == '123456':
return '登录成功'
else:
return '登录失败'
login_data.json:
[
{
"desc": "正确的用户名和密码",
"username": "admin",
"password": "123456",
"expect": "登录成功"
},
{
"desc": "错误的用户名",
"username": "root",
"password": "123456",
"expect": "登录失败"
},
{
"desc": "错误的密码",
"username": "admin",
"password": "123456111",
"expect": "登录失败"
},
{
"desc": "错误的用户名和密码",
"username": "admin1",
"password": "1234561",
"expect": "登录失败"
}
]
login_case.py:
import json
import unittest
from parameterized import parameterized
from app import Base_Dir
from tools import login
# 处理数据方法
def login_data():
file = Base_Dir + "/data/login_data.json"
new_list = []
with open(file,"r", encoding='utf-8') as fp:
data_list = json.load(fp)
for data in data_list:
new_list.append(tuple(data.values()))
return new_list
# test类
class LoginTest(unittest.TestCase):
@parameterized.expand(login_data())
def test_login(self,desc,username,pwd,expect):
print(desc)
print(f'username: {username}, password: {pwd}, expect: {expect}')
self.assertEqual(expect,login(username,pwd))
login.py:
import unittest
from htmltestreport import HTMLTestReport
from case.login_case import LoginTest
from app import Base_Dir
suite = unittest.TestSuite()
# suite.addTest(LoginTest("test_login"))
suite.addTest(unittest.makeSuite(LoginTest))
# runner = unittest.TextTestRunner()
# runner.run(suite)
runner = HTMLTestReport(Base_Dir+"/report/login_report.html","登录测试报告","V1.0")
runner.run(suite)
运行结果:
生成报告: