将参数传递给nosetest

时间:2014-12-28 17:43:13

标签: python unit-testing command-line-arguments nose

我把我的鼻子单元测试写得相当完整,但结果他们可能需要一段时间才能运行。我希望能够传递一个可选的命令行参数来运行一些快速版本的测试(例如尝试一些可能的输入,而不是每个可能的输入)。

理想情况下,我可以这样说:

nosetest --quick my_module/tests/my_test.py

在my_test.py中,有:

def test_something():
    if nose.command_line_args.quick:
        <run quick test>
    else:
        <run long test>

有一种简单的方法吗?我知道一种方法可能是编写一个鼻子插件,但当文档说我需要安装我使用setuptools编写的任何插件时,我吓跑了。学习安装工具来安装一个鼻子插件只需要传递一个标志是一些牦牛剃须我喜欢避免,如果我可以。

2 个答案:

答案 0 :(得分:5)

我不认为nosetests为您添加自定义命令行选项提供了任何方式(当然您可以编辑其代码以便为您自定义它,但这可能不实用)

但是,在典型的Unixy shell中,您可以随时为任何给定的命令设置环境变量

$ NOSEQUICK=1 nosetests my_module/tests/my_test.py

然后在您的代码中,您可以检查if os.getenv('NOSEQUICK', ''):

答案 1 :(得分:5)

一个好方法是用attributes装饰您的测试,然后将它们分组。假设你可以拥有&#39; unit&#39;用于快速和孤立的测试和集成&#39;进行更长时间的彻底测试。然后,您可以选择性地使用nose -a attrname

运行这些组