【Python+unittest】使用defaultTestLoaderfang方法自动寻找测试用例,批量执行并生成HTML格式的测试报告

当unittest里的测试用例过多时,如果依然使用测试套件TestSuite添加,就可能过于麻烦了。

# _*_ coding: utf-8 _*_
from test36 import MyTestCase
from unittest import TestSuite, TextTestRunner
from HTMLTestRunner import HTMLTestRunner
 
suite = TestSuite()
suite.addTest(MyTestCase('test_01'))
suite.addTest(MyTestCase('test_02'))
suite.addTest(MyTestCase('test_03'))
 
if __name__ == '__main__':
    f = file('result.html', 'wb')
    runner = HTMLTestRunner(stream=f, title='My Test', description='Test Html by HTMLTestRunner.')

我们可以将不同的测试用例.py文件存储到不同的目录下,然后使用defaultTestLoaderfang方法来自动获取,然后批量执行。

比如test01下面有目录test02目录,test01文件和test02文件,

test02目录下面有test03文件

每个文件有2个class类

全部代码如下:

1.test35.py

# test35.py
def add(x,y):
    return x + y
def sub(x,y):
    return x - y

2.不同目录下的test文件:test01.py、test02.py、test03.py。

每个文件都是一样的代码,只是class的名字不一样,class1、class2、class3、class4、class5、class6

# -*- coding: utf-8 -*-
# @Time : 2020/2/6 18:39
# @Author : 王怕怕升职记
# @File : test01.py
# _*_ coding: utf-8 _*_
from unittest import TestCase, main, skip
from test35 import add, sub

x, y = 5, 3
class MyTestCase5(TestCase):
    def setUp(self):
        pass
    def test_01(self):
        result1 = add(x, y)
        self.assertEqual(result1, 8, "add方法,执行结果不正确")
    @skip("stop test_02")
    def test_02(self):
        print('test-02')

    # test_03的断言刻意写错了,让大家可以看看执行结果
    def test_03(self):
        result2 = sub(x, y)
        self.assertEqual(result2, 22, "sub方法,执行结果不正确")

    def tearDown(self):
        pass
class MyTestCase6(TestCase):
    def setUp(self):
        pass
    def test_01(self):
        result1 = add(x, y)
        self.assertEqual(result1, 8, "add方法,执行结果不正确")
    @skip("stop test_02")
    def test_02(self):
        print('test-02')

    # test_03的断言刻意写错了,让大家可以看看执行结果
    def test_03(self):
        result2 = sub(x, y)
        self.assertEqual(result2, 22, "sub方法,执行结果不正确")

    def tearDown(self):
        pass

if __name__ == '__main__':
    main()

3.最终执行文件。

# _*_ coding: utf-8 _*_
from test36 import MyTestCase
from unittest import TestSuite, TextTestRunner, defaultTestLoader
from HTMLTestRunner import HTMLTestRunner

# 在当前目录下寻找测试用例
f = "./test01" 
# 使用该模块的discover方法,赋值路径、查找什么格式的文件
testcase = defaultTestLoader.discover(start_dir=f, pattern= "test*.py")

if __name__ == '__main__':
    f = file('result.html', 'wb')
    runner = HTMLTestRunner(stream=f, title='My Test', description='Test Html by HTMLTestRunner.')
    runner.run(testcase)  # 这里执行文件,改为寻找到的测试用例

运行结果:

发布了94 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/woshiyigerenlaide/article/details/104200509