1、前言
- 1、前面unittest篇博客中,有提到怎么去编写一个简单的TestCase,那么多个用例(TestCase)集合在一起就是TestSuite。
- 2、测试套件就是用来负责组织测试运行的。
2、实现
2.1 创建一个测试套件
suite = unittest.TestSuite()
2.2 加载case到Suite中
2.2.1 通过单条case进行加载到测试套件中
测试用例以上篇博客的测试用例为例
import unittest
class TestCaseDemo(unittest.TestCase):
def testassertdemo(self):
self.assertIn(1, [1, 2,3])
self.assertNotIn(1, [2, 3,4])
self.assertEqual('1', '1')
self.assertNotEqual(1, 2)
self.assertTrue(2 == 2)
def testassertdemo_1(self):
self.assertDictEqual({"code": 1}, {"code": 1})
self.assertListEqual([1, 2], [1, 2])
self.assertMultiLineEqual("name", "name")
def testassertdemo_2(self):
self.assertGreater(2, 0)
self.assertGreaterEqual(2, 0)
self.assertNotRegex("1", "122") # 正则是否匹配
self.assertCountEqual("12", "12")
# 1、第一种方法,一条一条case加载用例
def suite():
# 创建一个测试套件
suite = unittest.TestSuite()
# 将测试用例加载到测试套件中
case1 = TestCaseDemo("testassertdemo")
suite.addTest(case1)
case2 = TestCaseDemo("testassertdemo_1")
suite.addTest(case2)
case3 = TestCaseDemo("testassertdemo_2")
suite.addTest(case3)
return suite
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite())
2.2.2 通过测试用例类添加到测试套件中
# 2、第二种方法,通过测试用例类添加
def suite_2():
# 创建一个测试套件
suite = unittest.TestSuite()
# 将测试用例加载到测试套件中
# 创建一个用例加载对象
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(TestCaseDemo))
return suite
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite_2())
2.2.3 通过用例模块去添加case到测试套件中
# 第三种方法,通过用例所在的模块去添加case到测试套件中
def suite_3():
# 创建一个测试套件
suite = unittest.TestSuite()
# 创建一个用例加载对象
loader = unittest.TestLoader()
# 先导入用例用例所在的模块
from 优快云 import testcase # 此*.py模块是放用例所在的模块
suite.addTest(loader.loadTestsFromModule(testcase))
return suite
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite_3())
2.2.4 通过指定路径进行加载,默认会加载该路径下所有以test开头的模块中的测试用例
# 第四种方法,通过用例所在的路径进行加载,默认加载该路径下以test开头的模块中的测试用例
def suite_4():
# 创建一个测试条件
suite = unittest.TestSuite()
# 创建一个用例加载对象
loader = unittest.TestLoader()
suite.addTest(loader.discover(r'C:\Users\Maynard\PycharmProjects\studyday\优快云',pattern='testcase.py'))
# pattern参数可以写成test*.py,那么加载用例时,可以加载该路径下所有的测试用例
# 大家发现discover路径是绝对路径,后续分享os模块后可以改为相对路径(灵活)
return suite
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite_4())
3、总结
- 1、测试套件:使用unittest.TestSuite 这个类创建出来的对象就是测试套件;
- 2、用例加载对象:unittest.TestLoader()
- 3、main执行函数里面的TextTestRunner()是测试运行程序,unittest.TextTestRunner()就是创建测试运行程序;
- 4、第四种通过用例模块所在的路径加载用例到测试套件中,是最常用的用例加载方法。
ps :
- 1、后续内容继续深入unittest的学习;
- 2、有什么问题,欢迎大家评论区评论交流!谢谢大家!
- 3、如果觉得博主这篇博客对大家有用,麻烦评论区留下自己的‘脚印’ !