我正在尝试设置Python来执行鼻子,但仅在现有应用程序上我正在本地开发。我不希望鼻子在当前安装的所有库中运行。但是,我确实想要发现当前工作目录和子目录中的任何测试。
首先,我要做的就是确保我正在使用的参数被使用(由下面的@ need-batchelder解决)。但是,目前看来我正在传递的参数被忽略,并且正在进行测试的全局发现(即从python文件夹中获取测试。
来自the docs:
-V, --version
Output nose version and exit
从命令行运行nosetests -V会产生预期的版本输出:
nosetests -V
nosetests-script.py version 1.2.1
但是,以下测试脚本开始运行它可以找到的每个测试,包括安装在python路径中的库而不是当前工作目录的一部分,即使它位于在应用程序的根目录:
import nose, os
def main():
print os.getcwd()
x=raw_input() #This is just so I can see the output of the cwd before it launches into testing everything it can find.
result = nose.run(argv=['-V'])
if __name__ == '__main__':
main()
这是我尝试过的:
由于
编辑:尝试@ ned-batchelder的建议允许我使用给定的参数运行nose,但不允许在应用程序文件夹中发现测试。所以,如果我这样做,我可以传递参数,但我无法测试我的应用程序。
答案 0 :(得分:5)
我相信鼻子期望argv是完整的argv,这意味着第一个元素应该是程序的名称:
nose.run(argv=['me.py', '-V'])
答案 1 :(得分:1)
可能你想要的是:
arguments = sys.argv[:1] + my_custom_argument_list + sys.argv[1:]
nose.run(argv=arguments)
这将允许您使用自定义参数以及调用脚本的命令行中的参数。它还解决了Ned指出鼻子要求第一个参数指向脚本的问题。