刚接触pytest,咨询一下使用pytest写的测试用例怎么加到unittest的测试套件中,这能实现吗?还是只能添加unittest写的测试用例?
就是我测试用例是通过pytest开发的,后面要生成HTML的测试报告,要用到HTMLTestRunner的方法实现,这个是unittest用例的,我要将pytest的测试用例通过unittest的addTest方法添加到测试套件中,一直不成功,有什么办法吗?还是只能将pytest的测试用例改为unittest的方式才行。我查到pytest有生成HTML报告的方法,但是需要第三方包,不行。
以下内容是从百度等帖子中掏出来了,筛选不易,希望能帮到你
如果您想使用unittest的HTMLTestRunner方法来生成HTML测试报告,那么将pytest的测试用例添加到unittest测试套件中是可行的。以下是一些步骤可以帮助您实现这个目标:
请注意,虽然pytest有自己的HTML测试报告生成工具,但如果您希望使用unittest的HTMLTestRunner生成测试报告,那么您需要使用上述方法来添加pytest测试用例到unittest测试套件中。
1.方式1:
discover
可以一次调用多个脚本start_dir
被测试脚本的路径pattern
脚本名称匹配规则2.方式2: 只测试某个具体的模块、功能,使用 loaderTestsFromTestCase
、loaderTestsFromModule
3.方式3:加载指定测试类loader.loadTestsFromTestCase(测试用例类名)
import os
import time
import unittest
# 1. 初始化testloader(加载器)
loader = unittest.TestLoader()
# 2.1 加载方式1: 加载全部测试用例
# 2.1 suite = testloader.discover(文件夹路径,'test_*.py) 发现(加载)用例
# 2.2 加载方式2:加载多个模块测试用例
# 加载多个模块的测试用例,保存到测试套件当中
suite1 = loader.loadTestsFromModule(模块名)
suite2= loader.loadTestsFromTestCase(类名)
suite3 = loader.loadTestsFromName(name,模块名) # name:传入一个模块或测试用例类或测试方法,或一个可调用的对象
suite_list = [suite1,suite2,suite3]
# 将多个测试套件合并添加第一个总的测试套件中,初始化一个空的测试套件
total_suite = unittest.TestSuite()
total_suite.addTests(suite_list)
# suite.addTests([类名1('函数名1'),类名1('函数名2'),类名1('函数名3'),类名2,模块名1,模块名2,....])
# 加载方式3:加载指定测试类
# suite = loader.loadTestsFromTestCase(测试用例类名)
# 3. 初始化运行器
runner = unittest.TextTestRunner()
# 4. 运行测试用例 runner.run(suite)
runner.run(total_suite)
我还是将pytest改为了unittest的方式进行生成HTML报告的。