标签: nosetests

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

我有一个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)

什么是正确的语法?

testing pylons nose nosetests

149
推荐指数
2
解决办法
6万
查看次数

nosetests捕获我的print语句的输出.如何规避这个?

当我输入

$ nosetests -v mytest.py
Run Code Online (Sandbox Code Playgroud)

所有测试通过后,我的所有打印输出都被捕获.我想看看打印输出甚至一切都过去了.

所以我正在做的是强制断言错误来查看输出,就像这样.

class MyTest(TestCase):

    def setUp(self):
        self.debug = False

    def test_0(self):
        a = .... # construct an instance of something
        # ... some tests statements
        print a.dump()
        if self.debug:
            eq_(0,1)
Run Code Online (Sandbox Code Playgroud)

感觉如此hackish,必须有一个更好的方式.请赐教.

python nosetests

142
推荐指数
3
解决办法
4万
查看次数

如何在python中使用nosetest/unittest断言输出?

我正在为下一个函数编写测试:

def foo():
    print 'hello world!'
Run Code Online (Sandbox Code Playgroud)

所以,当我想测试这个函数时,代码将是这样的:

import sys
from foomodule import foo
def test_foo():
    foo()
    output = sys.stdout.getline().strip() # because stdout is an StringIO instance
    assert output == 'hello world!'
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用-s参数运行nosetests,测试会崩溃.如何通过unittest或nose模块捕获输出?

python unit-testing python-nose nosetests

106
推荐指数
9
解决办法
5万
查看次数

如何在具有nosetests的文件中指定单个测试?

我有一个名为test_web.py的文件,其中包含一个TestWeb类和许多名为test_something()的方法.

我可以像这样在类中运行每个测试:

$ 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
...
Run Code Online (Sandbox Code Playgroud)

但我似乎无法进行个别测试.在同一个PWD中运行时,这些给我"没有这样的测试"错误:

$ nosetests test_web.py:test_checkout
$ nosetests TestWeb:test_checkout
Run Code Online (Sandbox Code Playgroud)

这可能有什么问题?

python nosetests testcase

92
推荐指数
4
解决办法
3万
查看次数

pdb.set_trace()导致冻结的nosetests,不会进入调试器

我正在使用nosetests运行一套测试(.py文件).使用经典

import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

测试运行从未完成.它只是挂在断点已设置的位置,但从不插入pdb调试器.

任何想法为什么会这样?我已经尝试将断点移动到许多不同的位置(其他测试功能,其他文件)无济于事.

python nosetests pdb

54
推荐指数
2
解决办法
8084
查看次数

如何使用nose的assert_raises?

我搜索了文档,但找不到任何文档.有几个没有解释太多.

有人可以向我解释鼻子吗?

assert_raises(what should I put here?)
Run Code Online (Sandbox Code Playgroud)

功能以及如何使用它?

python nosetests

53
推荐指数
2
解决办法
3万
查看次数

禁用Python测试

对Python使用nosetests时,可以通过将test function的__test__属性设置为false 来禁用单元测试.我使用以下装饰器实现了这个:

def unit_test_disabled():
    def wrapper(func):
         func.__test__ = False
         return func

    return wrapper

@unit_test_disabled
def test_my_sample_test()
    #code here ...
Run Code Online (Sandbox Code Playgroud)

但是,这会产生调用包装器作为单元测试的副作用.包装将始终通过,但它包含在nosetests输出中.是否有另一种构造装饰器的方法,以便测试不会运行并且不会出现在nosetests输出中.

python nosetests

50
推荐指数
5
解决办法
2万
查看次数

在virtualenv中使用鼻子的问题

我无法在virtualenv项目中使用nose(nosetests) - 它似乎无法找到virtualenv环境中安装的软件包.

奇怪的是我可以设置

test_suite = 'nose.collector'
Run Code Online (Sandbox Code Playgroud)

在setup.py中运行测试就好了

python setup.py test
Run Code Online (Sandbox Code Playgroud)

但是当直接运行nosetests时,会出现各种导入错误.

我尝试了系统范围的鼻子安装和virtualenv鼻子包,没有运气.

有什么想法吗?

谢谢!!

python nose virtualenv nosetests

46
推荐指数
5
解决办法
1万
查看次数

列出Nosetest发现的所有测试

nosetests用来运行我的单元测试,效果很好.我想获得所有测试的列表nostests而不实际运行它们.有没有办法做到这一点?

python unit-testing nose nosetests

37
推荐指数
2
解决办法
8056
查看次数

如何使用django-nose运行单个测试或单个TestCase?

使用Django的普通测试运行器,您可以深入研究在特定应用程序,TestCase的特定子类或TestCase的特定子类中的特定测试中运行测试.

例如:

./manage.py test myapp.MyTestCase.test_something
Run Code Online (Sandbox Code Playgroud)

但是,除了测试特定应用程序之外,django-nose似乎不支持任何其他内容.我如何复制最后两个行为?

testing django unit-testing nosetests django-nose

35
推荐指数
2
解决办法
1万
查看次数