python在测试文件中测试等同于unittest Testsuite
在nosetests中,我知道您可以通过nosetests配置文件指定要运行的测试,如下所示:python在测试文件中测试等同于unittest Testsuite,python,nosetests,Python,Nosetests,在nosetests中,我知道您可以通过nosetests配置文件指定要运行的测试,如下所示: [nosetests] tests=testIWT_AVW.py:testIWT_AVW.tst_bynd1,testIWT_AVW.py:testIWT_AVW.tst_bynd3 但是,当添加了大量测试时,上面的内容看起来很混乱,并且更难维护,尤其是在不能使用换行符的情况下。我发现使用UnitTestsTestSuite特性指定要运行的测试要方便得多。e、 g def custom_suite(
[nosetests]
tests=testIWT_AVW.py:testIWT_AVW.tst_bynd1,testIWT_AVW.py:testIWT_AVW.tst_bynd3
但是,当添加了大量测试时,上面的内容看起来很混乱,并且更难维护,尤其是在不能使用换行符的情况下。我发现使用UnitTestsTestSuite特性指定要运行的测试要方便得多。e、 g
def custom_suite():
suite = unittest.TestSuite()
suite.addTest(testIWT_AVW('tst_bynd1'))
suite.addTest(testIWT_AVW('tst_bynd3'))
return suite
if __name__=="__main__":
runner = unittest.TextTestRunner()
runner.run(custom_suite())
问题:如何指定.py文件中的nosetests应该运行哪些测试<谢谢。另外,如果有一种方法可以通过一个nosetest配置文件指定测试,而该文件不会强制所有测试都写在一行上,那么我也愿意接受它,作为第二种选择,如果我正确理解了您的问题,您可以在这里选择:
- 您可以使用特殊的nose decorator标记测试:
和istest
。看nottest
- 您可以使用
- 您可以在中加入测试用例。我自己没有使用过它,但似乎您必须覆盖nose的默认测试发现以尊重您的测试套件(请参阅)
希望这会有所帮助。我不完全确定您是希望以编程方式还是从命令行运行测试。无论哪种方式,这都应包括:
import itertools
from nose.loader import TestLoader
from nose import run
from nose.suite import LazySuite
paths = ("/path/to/my/project/module_a",
"/path/to/my/project/module_b",
"/path/to/my/project/module_c")
def run_my_tests():
all_tests = ()
for path in paths:
all_tests = itertools.chain(all_tests, TestLoader().loadTestsFromDir(path))
suite = LazySuite(all_tests)
run(suite=suite)
if __name__ == '__main__':
run_my_tests()
请注意,对象有许多不同的方法可用于加载测试
您可以从其他代码中调用
run\u my\u tests
方法,也可以使用python解释器从命令行运行,而不是通过nose。如果您有其他机头配置,您可能还需要通过编程将其传入。谢谢,但不幸的是没有。我可以通过将方法名从tstXXXX更改为testXXXX来完成类似的事情,它们将自动通过nose运行。我希望能够创建自定义套件:因为这将是一种更有效的方法,可以运行特定的测试组,而不是运行不同的测试组。好的,谢谢。我添加了更多选项,请检查是否有帮助。谢谢,测试套件看起来很有希望。如果有人能提供一个很好的例子