Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python在测试文件中测试等同于unittest Testsuite_Python_Nosetests - Fatal编程技术网

python在测试文件中测试等同于unittest Testsuite

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中,我知道您可以通过nosetests配置文件指定要运行的测试,如下所示:

[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运行。我希望能够创建自定义套件:因为这将是一种更有效的方法,可以运行特定的测试组,而不是运行不同的测试组。好的,谢谢。我添加了更多选项,请检查是否有帮助。谢谢,测试套件看起来很有希望。如果有人能提供一个很好的例子