How do I specify a single test in a file with nosetests?

I have a file called test_web.py containing a class TestWeb and many methods named like test_something().

I can run every test in the class like so:

$ nosetests test_web.py
...
======================================================================
FAIL: checkout test
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/me/path/here/test_web.py", line 187, in test_checkout
...

But I can’t seem to run individual tests. These give me “No such test” errors when run in the same PWD:

$ nosetests test_web.py:test_checkout
$ nosetests TestWeb:test_checkout

What could be wrong here?

40758 次浏览

您必须像这样指定它: nosetests <file>:<Test_Case>.<test_method>,或者

nosetests test_web.py:TestWeb.test_checkout

参见 那些文件

您还可以指定一个模块:

nosetests tests.test_integration:IntegrationTests.test_user_search_returns_users

像其他答案所建议的那样,在命令行中指定名称是有用的。然而,当我正在编写测试时,我经常发现我只想运行我正在编写的测试,而且我必须在命令行上编写的名称会变得非常长和繁琐。在这种情况下,我更喜欢使用自定义的装饰器和标志。

我这样定义 wipd(“工作中的装饰工具”) :

from nose.plugins.attrib import attr
def wipd(f):
return attr('wip')(f)

这定义了一个装饰器 @wipd,它将在它装饰的对象上设置 wip属性。例如:

import unittest
class Test(unittest.TestCase):


@wipd
def test_something(self):
pass

然后,可以在命令行中使用 -a wip将测试的执行范围缩小到用 @wipd标记的测试。

注意名字。

为了避免这类问题,我使用了装饰器的名称 @wipd而不是 @wip:

import unittest
class Test(unittest.TestCase):


from mymodule import wip
@wip
def test_something(self):
pass


def test_something_else(self):
pass

import将使 wip修饰器成为一个成员 of the class,而 所有测试将被选中。attrib插件检查测试方法的父类,看看选择的属性是否也存在,而由 attrib创建和测试的属性不存在于隔离的空间中。因此,如果您使用 -a foo进行测试,并且您的类包含 foo = "platypus",那么该类中的所有测试都将由插件选择。

要运行多个特定的测试,只需将它们添加到命令行中,以空格分隔。

nosetests test_web.py:TestWeb.test_checkout test_web.py:TestWeb.test_another_checkout

在我的测试中,指定具有模块名称的测试不起作用

您必须指定到 .py的实际路径:

nosetests /path/to/test/file.py:test_function

这是 nose==1.3.7

我的要求是在另一个 窗户目录中的测试文件中运行一个测试——这是从 蟒蛇命令提示符中完成的,如下所示:

运行 鼻子测试从:

(base) C:\Users\ABC\Documents\work\

Test _ MyTestFile. pyPy在:

 (base) C:\Users\ABC\Documents\work\daily\

使用 包括路径引用进行单次测试,如下所示:

(base) C:\Users\ABC\Documents\work>nosetests "daily\\test_MyTestFile.py:MyTestClass.test_add_integers"

Test _ MyTestFile.py 看起来像这样:

import methodsFile
import unittest


class MyTestClass(unittest.TestCase):


def test_add_integers(self):
assert methodsFile.add(5, 3) == 8


def test_add_integers_zero(self):
assert methodsFile.add(3, 0) == 3

Py 看起来像这样:

def add(num1, num2):
return num1 + num2