1

我正在尝试设置 Python 来执行鼻子,但仅限于我在本地开发的现有应用程序。我不希望鼻子在当前安装的所有库中跑来跑去。但是,我确实希望鼻子发现当前工作目录和子目录中的任何测试。

首先,我要做的就是确保正在使用我传递的参数(由下面的@need-batchelder 解决)。但是,目前看起来我传递的参数被忽略了,并且正在对测试进行全局发现(即也从 python 文件夹中获取测试。

文档

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

这是我尝试过的:

  • 使用nose.main()、x=nose.core.run()、x=nose.run()。
  • 将参数直接传递给 nose.run() 并使用列表。
  • 使用nose.cfg 文件。

谢谢

编辑:尝试@ned-batchelder 的建议允许我使用给定的参数运行鼻子,但不允许在应用程序文件夹中发现测试。所以如果我这样做,我可以传递参数,但我不能测试我的应用程序。

4

2 回答 2

5

我相信鼻子希望 argv 是完整的 argv,这意味着第一个元素应该是程序的名称:

nose.run(argv=['me.py', '-V'])
于 2012-12-09T18:41:43.637 回答
1

可能,你想要的是:

arguments = sys.argv[:1] + my_custom_argument_list + sys.argv[1:]
nose.run(argv=arguments)

这将允许您使用自定义参数以及调用脚本的命令行中的参数。它还解决了 Ned 指出的关于 nose 要求第一个参数指向脚本的问题。

于 2013-01-17T22:39:42.693 回答