gpt4 book ai didi

python nosetests 相当于测试文件中的unittest Testsuite

转载 作者:行者123 更新时间:2023-11-28 21:59:42 26 4
gpt4 key购买 nike

在 nosetests 中,我知道您可以通过这样的 nosetests 配置文件指定要运行的测试:

[nosetests]
tests=testIWT_AVW.py:testIWT_AVW.tst_bynd1,testIWT_AVW.py:testIWT_AVW.tst_bynd3

但是,当添加大量测试时,上面的内容看起来很乱并且变得更难维护,尤其是在无法使用换行符的情况下。我发现能够使用 unittests TestSuite 功能指定我想运行的测试要方便得多。例如

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 配置文件指定测试,该文件不会强制所有测试都写在一行上,我也会接受它,作为第二种选择

最佳答案

我不完全确定您是想以编程方式还是从命令行运行测试。无论哪种方式,这都应该包括:

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()

请注意 nose.suite.TestLoader对象有许多不同的方法可用于加载测试。

您可以从其他代码调用 run_my_tests 方法,或者您可以使用 python 解释器从命令行运行它,而不是通过 nose。如果您有其他 Nose 配置,您可能还需要以编程方式传递它。

关于python nosetests 相当于测试文件中的unittest Testsuite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16268688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com