如何在Pylons中使用Nose运行单个测试

Ben*_*Ben 149 testing pylons nose nosetests

我有一个Pylons 1.0应用程序,在测试/功能目录中有一堆测试.我得到了奇怪的测试结果,我想只运行一次测试.鼻子文档说我应该能够在命令行传递测试名称,但无论我做什么,我都会得到ImportErrors

例如:

nosetests -x -s sometestname
Run Code Online (Sandbox Code Playgroud)

得到:

Traceback (most recent call last):
  File "/home/ben/.virtualenvs/tsq/lib/python2.6/site-packages/nose-0.11.4-py2.6.egg/nose/loader.py", line 371, in loadTestsFromName
   module = resolve_name(addr.module)
  File "/home/ben/.virtualenvs/tsq/lib/python2.6/site-packages/nose-0.11.4-py2.6.egg/nose/util.py", line 334, in resolve_name
   module = __import__('.'.join(parts_copy))
ImportError: No module named sometestname
Run Code Online (Sandbox Code Playgroud)

我得到了同样的错误

nosetests -x -s appname.tests.functional.testcontroller
Run Code Online (Sandbox Code Playgroud)

什么是正确的语法?

Ant*_*air 232

nosetests appname.tests.functional.test_controller应该工作,文件的名称test_controller.py.

要运行特定的测试类和方法,请使用表单的路径module.path:ClassNameInFile.method_name,即使用冒号分隔模块/文件路径和文件中的对象.module.path是文件的相对路径(例如tests/my_tests.py:ClassNameInFile.method_name).

  • 要运行特定的测试类和方法,请使用`module.path:ClassNameInFile.method_name`形式的路径,即使用冒号分隔模块/文件路径和文件中的对象. (68认同)
  • 对于其他困惑的人:`module.path`是文件的相对路径(例如`my_tests.py:ClassNameInFile.method_name`),而不是你在`import`语句中使用的路径 (9认同)
  • 这将在测试控制器/模块中运行每个测试.运行单一测试方法怎么样?类似于`appname.tests.functional.test_controller.name_of_test_method`. (2认同)

Kee*_*Kee 46

对于我使用Nosetests 1.3.0这些变体是有效的(但请确保您__init__.py在您的测试文件夹中):

nosetests [options] tests.ui_tests
nosetests [options] tests/ui_tests.py
nosetests [options] tests.ui_tests:TestUI.test_admin_page
Run Code Online (Sandbox Code Playgroud)

请注意模块名称和类名之间的单冒号.