将参数传递给nosetest

Sup*_*ric 3 python unit-testing nose command-line-arguments

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

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

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>
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*lli 5

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

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

$ NOSEQUICK=1 nosetests my_module/tests/my_test.py
Run Code Online (Sandbox Code Playgroud)

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


dmi*_*kov 5

一种好方法是使用属性装饰测试,然后将它们分组.假设您可以使用"单位"进行快速和隔离测试,并进行"整合"以进行更长时间运行和彻底的测试.然后,您可以选择性地运行这些组nose -a attrname