Python 2.7.1 鼻子1.1.2
我已经阅读了相关问题,但他们没有帮助。我的测试用例如下所示
例如在my_tests.py
def load_tests(loader, tests, pattern):
return unittest.TestSuite(MyTest() for scenario_name in list)
我有几个这样的模块,带有load_tests方法,我使用unittest运行它们,如下所示
test_loader = unittest.defaultTestLoader.discover( '.', my_pattern_var);
test_runner = unittest.TextTestRunner();
result = test_runner.run(test_loader)
sys.exit(not result.wasSuccessful())
如果我用等效的鼻子代码nose.main()
替换它,它会找到0个测试。
问题
答案 0 :(得分:2)
import re
from nose.config import Config
TEST_REGEX = '(?:^|[\\b_\\./-])[Ll]oad'
# Change the test match pattern
nose_config = Config()
nose_config.testMatch = re.compile(TEST_REGEX)
# Specify the use of a Plugin Manager, load plugins
nose_config.plugins = BuiltinPluginManager()
nose_config.plugins.loadPlugins()
run(config=nose_config)
所以这个基本选项改变了正则表达式模式,鼻子正在寻找从标记为test的所有方法到标记为load的所有方法。然而,这不是你需要完全运行鼻子的东西,还需要获得某种解析器对象或将一组特定的argv传递给鼻子。
如果你想传递一组特定的argv来解析,只需要做
run(config=nose_config, argv=["foo", "bar"])
否则你可以在命令行指定鼻子特定的参数,只要你不扔任何时髦的鼻子就不应该出错。
查看https://github.com/nose-devs/nose/tree/master/nose的鼻子源代码,在那里我获得了写这个所需的所有信息