import unittest class Testfunc(unittest.TestCase): def testfunc(self): print('testfunc1') def testfunc2(self): print('testfunc2') suit = unittest.TestSuite() suit.addTest(Testfunc('testfunc')) #单独增加测试用例 suit.addTest(unittest.makeSuite(Testfunc)) #把Testfunc下的测试用例都加到suit里面 unittest.TextTestRunner().run(suit) #TextTestRunner创建一个运行器,运行测试用例 if __name__ == '__main__': unittest.main() #运行class类中的所有测试用例
1、unittest执行顺序,按函数的字母顺序执行
if __name__ == '__main__':
unittest.main()
2、方法开头都是以test开头,才会被执行
3、unittest.main()与TextTestRunner().run()的区别
main()执行的是class中的所有方法,TextTestRunner执行的是自己给suit加入的测试用例
4、setUp、tearDown的执行顺序
import unittest class Testfunc(unittest.TestCase): def testfunc(self): print('testfunc1') def testfunc2(self): print('testfunc2') def setUp(self): print("每个用例执行前,运行") def tearDown(self): print("每个用例执行结束后,运行") @classmethod def setUpClass(cls): print("所有用例执行前,运行") @classmethod def tearDownClass(cls): print("所有用例执行结束后,运行") if __name__ == '__main__': unittest.main() #运行class类中的所有测试用例
discover 可以把多个文件中的测试用例集中起来,并返回给测试套件
discover(start_dir,pattern='test*.py',top_level_dir=None)
start_dir :要测试的模块名或测试用例目录。
pattern='test*.py' :表示用例文件名的匹配原则。星号“*”表示任意多个字符。
top_level_dir=None:测试模块的顶层目录。如果没顶层目录(也就是说测试用例不是放在多级目录
中),默认为 None。
import unittest def createsuit(): testdir = "E:/lw/书籍/python/自动化/day1/" discover = unittest.defaultTestLoader.discover(testdir,pattern="test*.py",top_level_dir=None) print(discover) return discover if __name__ == '__main__': runner = unittest.TextTestRunner() runner.run(createsuit())