在脚本中使用Python中的nose时重写现有配置

2024-05-14 11:31:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图设置Python来执行nose,但是只在本地开发的现有应用程序上运行。我不想在当前安装的所有库中到处乱查。但是,我希望nose发现当前工作目录和子目录中的任何测试。在

首先,我要做的就是确保我传递的参数被使用(下面由@need batchelder解决)。然而,目前看来,我传递的参数似乎被忽略了,测试的全局发现正在发生(也就是说,从python文件夹中获取测试)。在

来自the docs

     -V, --version
     Output nose version and exit

从命令行运行nosetests-V将生成预期的版本输出:

^{pr2}$

但是,下面的测试脚本开始运行它能找到的每个测试,包括安装在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()

以下是我尝试过的:

  • 使用鼻.主(),x=机头。机芯。运行(),x=鼻子。跑(). 在
  • 将参数直接传递给鼻子。跑()并使用列表。在
  • 使用鼻.cfg文件。在

谢谢

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


Tags: the目录文件夹应用程序参数osmainversion
2条回答

也许,你想要的是:

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

您也可以从该命令行调用这些参数。它还解决了Ned指出的nose要求第一个参数指向脚本的问题。在

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

nose.run(argv=['me.py', '-V'])

相关问题 更多 >

    热门问题