按顺序执行
suite = unittest.TestSuite()
suite.addTest(BaiduTest('test_baidu_news'))
suite.addTest(BaiduTest('test_baidu_map'))
unittest.TextTestRunner(verbosity=2).run(suite)
注解:在以上代码中,首先需要对TestSuite类进行实例化,使之成为一个对象suite,然后调用TestSuite类中addTest方法,把测试用例添加到测试套件中,最后执行测试套件,从而执行测试套件中的测试用例。
按测试类执行
makeSuite可以实现把测试用例类中所有的测试用例组成测试套件TestSuite。
suite = unittest.TestSuite(unittest.makeSuite(BaiduTest))
unittest.TextTestRunner(verbosity=2).run(suite)
加载测试类
suite = unittest.TestLoader().loadTestsFromTestCase(BaiduTest)
unittest.TextTestRunner(verbosity=2).run(suite)
按测试模块执行
在TestLoader类中也可以按模块来执行测试。在Python中,一个Python文件就是一个模块,一个模块中可以有N个测试类,在一个测试类中可以有N个测试用例。
suite = unittest.TestLoader().loadTestsFromModule('unittest1.py')
unittest.TextTestRunner(verbosity=2).run(suite)
优化测试套件
以上实例是把测试套件写在了main主函数中,也可以单独把测试套件写成一个方法来调用。这里以加载测试类为例,把测试套件写成一个单独的方法。
@staticmethod
def suite(testCaseClass):
suite = unittest.TestLoader().loadTestsFromTestCase(testCaseClass)
return suite
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(BaiduTest.suite(BaiduTest))