标签: nosetests

阻止测试打印日志信息?

如何防止nosetests在其测试的输出中散布日志输出?我只是将记录添加到我的Django代码中,如下所示:

import logging
logger = logging.getLogger(__name__)

def home_page(request, template):
    device = get_device_capabilities(request)
    device_type = get_device_type(device)
    logger.info("device_type = " + device_type)
    logger.info("screen_width = " + str(screen_width))
Run Code Online (Sandbox Code Playgroud)

当我运行这样的测试时:

nosetests --nocapture
Run Code Online (Sandbox Code Playgroud)

我明白了:

[04/15/2014 02:42:57 PM] INFO [apps.home.views:24] device_type = computer
[04/15/2014 02:42:57 PM] INFO [apps.home.views:25] screen_width = 800
....................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 230 tests in 42.521s

OK
Run Code Online (Sandbox Code Playgroud)

我刚刚开始提高异常和记录信息,我当然不希望我的测试输出充斥着我的记录器语句的输出.我认为"--nocapture"标志应该阻止这一点.我已经浏览了所有的测试文档,并没有看到任何有用的东西.我错过了什么吗?有没有办法阻止nosetests在我的输出中包含我的记录器消息?

谢谢!

python django nosetests

15
推荐指数
2
解决办法
6099
查看次数

如何使用nosetests输出覆盖率XML?

我正在尝试输出我的鼻子测试的覆盖率XML,以便他们出现在Hudson上.我正在执行的行是:

nosetests --with-gae -v --all-modules --with-xunit --with-coverage
Run Code Online (Sandbox Code Playgroud)

我在控制台中看到了coverage输出,但是没有包含coverage数据的xml文件.如何让它输出coverage xml?

python code-coverage cobertura nosetests

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

如何在Nose2中运行特定测试

在以前版本的Nose测试框架中,有几种方法只能指定所有测试的子集:

nosetests test.module
nosetests another.test:TestCase.test_method
nosetests a.test:TestCase
nosetests /path/to/test/file.py:test_function
Run Code Online (Sandbox Code Playgroud)

http://nose.readthedocs.org/en/latest/usage.html#selecting-tests

但是,我找不到有关Nose2中类似测试选择的任何信息.有一个提到的关于不同的测试发现文档,但似乎并没有被相关.

有没有办法在nose2或(更一般地)unittest2中选择特定的测试或测试用例?

python nosetests unittest2 nose2

14
推荐指数
1
解决办法
5889
查看次数

Python nosetests跳过某些测试

我正在研究用python编写的Web应用程序.

假设我的test_login.py模块中有5个测试.

每个测试都是一个类.

通常有一个基本测试扩展TestFlow类,这是我们预定义的测试类.

然后,该模块中的其他测试扩展了该基础测试.

例如 :

#The base test 

TestLogin(TestFlow):
    #do login_test_stuff_here

#Another test in the same module

TestAccountDetails(TestLogin)
    #do account_details_test_stuff_here

...
Run Code Online (Sandbox Code Playgroud)

它实际上非常方便,因为为了测试例如AccountDetails用户必须登录,所以我可以继承TestLogin测试,我准备测试其他功能作为登录用户.

所有测试都在Project/project/tests文件夹中.

我们使用带有选项--with-pylons的nosetests来运行测试.

我的问题是,是否有办法将某些TestClass标记为"不要测试这个".

因为我不想浪费时间直接执行这些"基础测试",因为它们将由其他来自它们的测试执行.

可能会有这些测试的音调,我想在可能的情况下保存每一秒.

我已经找到了像Skip,SkipTest或@nottest这样的东西,但这些只适用于一个ceratin TestClass中的test_methods,所以我认为它不会在这里工作,我是否每个测试用例都有一个类.

python pylons nosetests

13
推荐指数
3
解决办法
6691
查看次数

测试IPython笔记本

我开始使用IPython笔记本来记录我的一些代码和交互式使用示例.为了避免文档从代码中过时,我希望笔记本中的代码能够定期执行以捕获输出中的任何更改并标记运行时错误.

我用它nosetests来运行回归测试,并想知道是否有办法让它为此目的执行IPython笔记本.请注意,我不是试图nosetests在IPython笔记本中运行(就像在ipython_nose中一样).东西沿的线条更doctest插件.这样的插件存在吗?

python nose ipython nosetests ipython-notebook

12
推荐指数
1
解决办法
2613
查看次数

有没有办法让python的鼻子模块在__main__和命令行中工作相同?

我不确定如何使鼻子模块的__main__处理程序工作.我在测试模块的末尾有这个:

if __name__ == "__main__":
    import nose
    nose.main()
Run Code Online (Sandbox Code Playgroud)

这给了我:

----------------------------------------------------------------------
Ran 0 tests in 0.002s

OK
Run Code Online (Sandbox Code Playgroud)

但它通过命令行运行相同的东西,它找到测试并执行它们:

MacBook-Pro:Storage_t meloam$nosetests FileManager_t.py 
............E..
======================================================================
ERROR: testStageOutMgrWrapperRealCopy (WMCore_t.Storage_t.FileManager_t.TestFileManager)
----------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

SNIP

----------------------------------------------------------------------
Ran 15 tests in 0.082s

FAILED (errors=1)
Run Code Online (Sandbox Code Playgroud)

我一直在玩通过不同的参数到nose.main()但我找不到任何有用的东西.我错过了一些非常明显的东西吗

谢谢

python nose nosetests

10
推荐指数
3
解决办法
3598
查看次数

如何使用nosetests分别组织和运行unittests和功能测试

我有以下典型的python项目文件结构

packageA
   +----subpackage1
            +----classa.py
   +----subpackage2
            +----classb.py
   +----test
          +----subpackage1
                    +----classa_test.py 
          +----subpackage2
                    +----classb_test.py
Run Code Online (Sandbox Code Playgroud)

我目前正在尝试组织我的单元测试和功能测试,因此我可以使用nose单独运行unittests和功能测试,但也可以选择运行所有测试.测试将存在于packageA/test/subpackage1和packageA/test/subpackage2中.

  • 组织不同测试的好方法是什么?按文件夹(功能/ vs单位/)?通过命名测试类的约定(ClassATest vs ClassAFunctionalTest)?或者通过命名测试方法的约定(classa_foo_test vs classa_bar_functional_test)?
  • 有人能解释一下nosetests的正则表达式匹配是如何工作的吗?选项-m,-i和-e似乎没有像我期望的那样运行.正则表达式是匹配目录(subpackage1),文件(classa_test)还是测试类(ClassATest)还是测试方法(classa_foo_test)?我非常困惑

python unit-testing functional-testing nose nosetests

10
推荐指数
1
解决办法
3675
查看次数

启用HTML报告时,禁用鼻子覆盖率报告到STDOUT?

我正在使用nose(通过django-nose)和coverage插件来检查我的Django项目的测试覆盖率.

我已配置nose以在每次测试运行时生成HTML覆盖率报告:

NOSE_ARGS = [                                                                   
    '--with-coverage',                                                            
    '--cover-package=foot',                                                       
    '--cover-html',                                                               
    '--cover-html-dir=cover',
]
Run Code Online (Sandbox Code Playgroud)

现在,我想禁用每次测试运行后显示的纯文本覆盖率报告; HTML功能更强大,而且格式错误的表格使得很难看到实际的测试输出.似乎也nosetests没有coverage这样的选择,或者我也许找不到一个?

python nose nosetests coverage.py

10
推荐指数
1
解决办法
1787
查看次数

如何测试在具有nosetests的函数中调用函数

我正在尝试为项目设置一些自动单元测试.我有一些功能,作为副作用偶尔会调用另一个功能.我想写一个单元测试,测试第二个函数被调用,但我很难过.下面是伪代码示例:

def a(self):
    data = self.get()
    if len(data) > 3500:
        self.b()

    # Bunch of other magic, which is easy to test.

def b(self):
    serial.write("\x00\x01\x02")
Run Code Online (Sandbox Code Playgroud)

我该如何测试b()-gets调用?

python testing unit-testing nosetests

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

使用nosetests进行测试超时

我正在设置我的nosetests环境,但似乎无法让超时工作正常.我希望x在鼻子发现的每个测试中有第二个(比如说2)超时.

我尝试了以下方法:

nosetests --processes=-1 --process-timeout=2
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但我注意到以下几点:

  • 对于一些简单的测试用例,并行测试需要更长的时间
  • 当测试超时(因此失败)时,Nose不报告

有谁知道如何让这样的超时工作?我希望它能在没有并行测试的情况下工作,但只要我得到测试超时的反馈,这就不会成为问题.

python nose nosetests python-2.7

10
推荐指数
1
解决办法
3724
查看次数