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

时间:2010-09-13 21:12:07

标签: testing pylons nose nosetests

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

例如:

nosetests -x -s sometestname

给出:

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

我得到了同样的错误
nosetests -x -s appname.tests.functional.testcontroller

正确的语法是什么?

6 个答案:

答案 0 :(得分:224)

nosetests appname.tests.functional.test_controller应该有效,文件名为test_controller.py

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

答案 1 :(得分:45)

对于我使用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

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

答案 2 :(得分:2)

我必须添加" .py"文件扩展名,即

r'/path_to/my_file.py:' +  r'test_func_xy'

也许这是因为我没有文件中的任何课程。 没有.py,鼻子在抱怨:

  

在文件/ path_to / my_file中找不到可调用的test_func_xy:文件不是   一个python模块

虽然我在__init__.py文件夹中有一个/path_to/

答案 3 :(得分:0)

我根据以前的答案编写了这个小脚本:

btn = QtGui.QPushButton("Log in", self)
btn.clicked.connect(btn.deleteLater)

答案 4 :(得分:0)

以下内容对我很有效:

nosetests test_file.py:method_name

请注意,我的测试不在类中。测试方法在一个文件中。

答案 5 :(得分:0)

对于鼻子测试 1.3.7,您需要执行以下操作:

nosetests --tests=tests.test_something.py,tests.test_something_else.py