【二、自动化测试】unittest的其他3种加载方式
在unittest测试框架简介中,我们已经了解了unittest框架的基本用法和测试类的创建
现在,将以其中的示例为例,介绍如何生成一份测试用例报告
将unittest测试框架简介代码拿过来直接使用
# 引入unittest模块
import unittest
# 创建测试类,继承unittest.TestCase
class TestCaseClass(unittest.TestCase):
# 测试方法,每执行一次test的测试方法就会执行一次
def setUp(self) -> None:
print("setUp方法")
def tearDown(self) -> None:
print("tearDown方法")
# 测试类,以@classmethod修饰测试类,且在过程中仅执行一次
@classmethod
def setUpClass(cls) -> None:
print("setUpClass每个类执行一次")
@classmethod
def tearDownClass(cls) -> None:
print("tearDownClass每个类执行一次")
def test_method1(self):
a = 1
b = 2
c = a + b
# 断言 判断c和3是否相同
self.assertEqual(c, 3)
def test_method2(self):
a = 2
b = 3
c = a * b
#断言 判断c和6是否相同
self.assertEqual(c, 6)
if __name__ == '__main__':
# 执行所有的以test为开头的测试用例
unittest.main()
main方法的其他加载方式
main的基本使用方式
- 当测试模块作为独立的可执行脚本被运行时,执行
unittest.main()函数来加载并执行测试用例
if __name__ == '__main__':
# 执行所有的以test为开头的测试用例
unittest.main()
-
unittest.main()函数还支持一些参数,可以用来控制测试的行为
testsuit方式
测试套件(TestSuite)是一个集合,集合将多个测试用例组合存放在一起,以便一次性执行测试用例
创建测试套件的方式有:
- 手动添加测试用例:使用addTest()方法将测试用例添加到套件中
# 创建一个名为testsuit的测试套件
testsuit= unittest.TestSuite()
# 手动添加测试用例
# TestCaseClass为class类名;test_method1是测试类中的方法
testsuit.addTest(TestCaseClass('test_method1'))
testsuit.addTest(TestCaseClass('test_method2'))
# 执行测试套件
runner = unittest.TextTestRunner()
runner.run(testsuit) # 使用run方法运行测试套件
-
通过加载器加载测试用例:可以使用TestLoader的加载方法,如
loadTestsFromTestCase()、loadTestsFromName()和loadTestsFromModule(),来加载测试用例并自动添加到测试套件中
testLoader加载方式
TestLoader是unittest框架中的加载器,它提供了几个方法来查找测试用例并批量添加到测试套件中:
-
loadTestsFromTestCase: 根据传入的测试类,查找并加载该测试类中的所有测试用例。 -
loadTestsFromName: 根据传入的名称,查找并加载对应的测试用例。可以通过测试用例的名称来指定要加载的具体测试用例。 -
loadTestsFromModule: 根据传入的模块名,加载该模块中的所有测试用例。它会自动查找并加载模块中所有以 "test" 开头的函数或方法作为测试用例。
# 创建一个名为testsuit的测试套件
testsuit= unittest.TestSuite()
# 自动添加添加测试用例,通过loadTestsFromTestCase加载测试用例到测试套件中
# TestCaseClass为class类名
testsuit.addTests(unittest.TestLoader().loadTestsFromTestCase(TestCaseClass))
# 执行测试套件
runner = unittest.TextTestRunner()
runner.run(testsuit) # 使用run方法运行测试套件
discover 路径加载
在unittest框架中,可以使用unittest.TestLoader中的discover()方法来通过文件路径加载测试用例
discover()方法会自动递归地查找指定路径下的.py测试模块,并加载其中的测试用例
# 创建一个名为testsuit的测试套件
testsuit= unittest.TestSuite()
# 使用 discover() 方法加载指定路径下的测试用例
# start_dir指定了测试模块所在的路径,可以是相对路径或绝对路径
# pattern用于匹配测试模块的文件名,可以使用通配符
testsuit.addTests(unittest.defaultTestLoader.discover(start_dir='path/to/tests', pattern='test*.py'))
# 执行测试套件
runner = unittest.TextTestRunner()
runner.run(testsuit)
作者简介:
程序员山茶,一个工作5年,并坚持探索测试之路的测试开发工程师。曾混迹于互联网大厂、IOTA行业领航企业、安全行业、大数据行业领航企业,欢迎和我一起沟通交流。公众号【程序员山茶】

欢迎关注我, 和我一起探索测试之路,终身成长
更多推荐

所有评论(0)