当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) # 这里执行文件,改为寻找到的测试用例
运行结果: