unittest生成html测试报告
1.需要测试的函数
import requests def visit(url, headers, data): res = requests.post(url, json=data, headers=headers) return res.json() if __name__ == '__main__': url = 'http://120.78.128.25:8766/futureloan/member/login' headers = {"X-Lemonban-Media-Type": "lemonban.v2"} data = {"mobile_phone": "18111111111", "pwd": "12345678"} print(visit(url,headers,data))
断言方式:
assertTrue, 判断条件
assertEqual,
assertGreater, a > b
assertIn, a in b
self.assertRegex(), 正则表达式匹配
import unittest from zijilianxi.unittest.test1111.fun_visit import visit url = 'http://120.78.128.25:8766/futureloan/member/login' headers = {"X-Lemonban-Media-Type": "lemonban.v2"} data = {"mobile_phone": "18111111111", "pwd": "12345678"} class TestLogin(unittest.TestCase): def test_login(self): res = visit(url,headers,data) print(res) try: self.assertEqual(res["msg"], "OK1") except AssertionError as e: print("断言失败", e) if __name__ == '__main__': unittest.main()
收集测试用例: TestLoader, 加载器,加载测试用例
放到测试集合(测试套件) TestSuite
1, 初始化 testloader
2, suite = testloader.discover(文件夹路径, 'demo_*.py') 发现测试用例
3, 如果你想运行的用例,放到指定的文件夹当中,
# TestRunner,
1, 运行用例
2, 生成测试报告
import os import unittest import time from zijilianxi.unittest.test1111.HTMLTestRunnerNew import HTMLTestRunner # 初始化加载器 testloader testloader = unittest.TestLoader() # 查找测试用例 dir_path = os.path.dirname(os.path.abspath(__file__)) suit = testloader.discover(dir_path) # report report_path = os.path.join(dir_path,"reprot") if not os.path.exists(report_path): os.mkdir(report_path) """ # 普通文本生成测试报告 TextTestRunner file_path = os.path.join(report_path,"test_result.txt") print(file_path) with open(file_path,"w",encoding="utf-8") as f: runner = unittest.TextTestRunner(f,verbosity=2) # 运行测试用例 runner.run(suit) """ # 生成 html 测试报告 HTMLTestRunner ts = time.strftime("%Y_%m_%d %H_%M_%S") # 时分秒之间不能用冒号: file_name = r"test_result_{}.html".format(ts) file_path2 = os.path.join(report_path,file_name) with open(file_path2,"wb") as f: runner = HTMLTestRunner(f, title="测试报告", description="测试结果", tester="老李") runner.run(suit)
收集测试用例: TestLoader, 加载器,加载测试用例
放到测试集合(测试套件) TestSuite
1, 初始化 testloader
2, suite = testloader.discover(文件夹路径, 'demo_*.py') 发现测试用例
3, 如果你想运行的用例,放到指定的文件夹当中,
# TestRunner,
1, 运行用例
2, 生成测试报告
几种加载测试用例的方式:
1, 用的最多,整个项目一起加载,使用:discover
2, 你想只测试某一个具体的某块,功能,使用 loadTestsFromTestCase 或者 loadTestsFromModule
3, pytest,
HTMLTestRunner, 不是unittest 自带的。需要自己去安装。
1,安装方式不是通过 pip
2, 他是别人写好的一个模块,你可以直接下载下来的 .py
3, 复制到项目目录下,然后倒入。
4, 第二种方式:我们可以放到 python 的公共库当中
import os import unittest #1, 初始化 testloader import time from class_18_report.HTMLTestRunnerNew import HTMLTestRunner from class_18_report.test_cases import test_login, test_register from class_18_report.test_cases.test_login import TestLogin from class_18_report.test_cases.test_rechage import TestRecharge from class_18_report.test_cases.test_register import TestRegister testloader = unittest.TestLoader() # 2, 查找测试用例,加载 dir_path = os.path.dirname(os.path.abspath(__file__)) case_path = os.path.join(dir_path, 'test_cases') # suite = testloader.discover(case_path) # 加载两个模块当中的测试用例,保存到测试套件当中 # suite = testloader.loadTestsFromModule(test_login) # suite2 = testloader.loadTestsFromModule(test_register) # 添加指定的测试类 suite = testloader.loadTestsFromTestCase(TestLogin) suite2 = testloader.loadTestsFromTestCase(TestRecharge) # 讲这两个测试套件合并添加到一个总的测试套件套件 suite_total = unittest.TestSuite() suite_total.addTests(suite) suite_total.addTests(suite2) # suite = testloader.loadTestsFromName() print(suite)