unittest生成html测试报告

lucialee 2020-01-14

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 > bassertIn,  a in bself.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, 加载器,加载测试用例放到测试集合(测试套件) TestSuite1, 初始化 testloader2, 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)

相关推荐