我有一个测试文件,其中包含花费大量时间的测试(它们将计算结果发送到集群并等待结果)。所有这些都在特定的TestCase类中。
由于它们需要时间,而且不太可能中断,因此我希望能够选择测试的该子集是否运行(最好的方法是使用命令行参数,即“ ./tests.py --offline”或其他内容)这样),因此我可以在需要的时候经常且快速地运行大多数测试,并偶尔进行整套测试。
./tests.py --offline
现在,我只是unittest.main()用来开始测试。
unittest.main()
谢谢。
默认值unittest.main()使用默认的测试加载程序从运行main的模块中制作出TestSuite。
您不必使用此默认行为。
例如,您可以制作三个unittest.TestSuite实例。
“快速”子集。
fast = TestSuite()
fast.addTests( TestFastThis ) fast.addTests( TestFastThat )
“慢”子集。
slow = TestSuite()
slow.addTests( TestSlowAnother ) slow.addTests( TestSlowSomeMore )
“整个”设置。
alltests = unittest.TestSuite([fast, slow])
请注意,我已经调整了TestCase名称以指示“快速”与“慢”。您可以将unittest.TestLoader子类化以解析类的名称并创建多个加载器。
然后,您的主程序可以使用optparse或argparse(从2.7或3.2开始提供)来解析命令行参数,以选择要运行,快速,慢速或全部运行的套件。
或者,您可以信任这sys.argv[1]是三个值之一,并使用像这样简单的值
sys.argv[1]
if __name__ == "__main__": suite = eval(sys.argv[1]) # Be careful with this line! unittest.TextTestRunner().run(suite)