如何防止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在我的输出中包含我的记录器消息?
谢谢!
我正在尝试输出我的鼻子测试的覆盖率XML,以便他们出现在Hudson上.我正在执行的行是:
nosetests --with-gae -v --all-modules --with-xunit --with-coverage
Run Code Online (Sandbox Code Playgroud)
我在控制台中看到了coverage输出,但是没有包含coverage数据的xml文件.如何让它输出coverage xml?
在以前版本的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编写的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,所以我认为它不会在这里工作,我是否每个测试用例都有一个类.
我开始使用IPython笔记本来记录我的一些代码和交互式使用示例.为了避免文档从代码中过时,我希望笔记本中的代码能够定期执行以捕获输出中的任何更改并标记运行时错误.
我用它nosetests来运行回归测试,并想知道是否有办法让它为此目的执行IPython笔记本.请注意,我不是试图nosetests在IPython笔记本中运行(就像在ipython_nose中一样).东西沿的线条更doctest插件.这样的插件存在吗?
我不确定如何使鼻子模块的__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项目文件结构
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中.
我正在使用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这样的选择,或者我也许找不到一个?
我正在尝试为项目设置一些自动单元测试.我有一些功能,作为副作用偶尔会调用另一个功能.我想写一个单元测试,测试第二个函数被调用,但我很难过.下面是伪代码示例:
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调用?
我正在设置我的nosetests环境,但似乎无法让超时工作正常.我希望x在鼻子发现的每个测试中有第二个(比如说2)超时.
我尝试了以下方法:
nosetests --processes=-1 --process-timeout=2
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但我注意到以下几点:
有谁知道如何让这样的超时工作?我希望它能在没有并行测试的情况下工作,但只要我得到测试超时的反馈,这就不会成为问题.
nosetests ×10
python ×10
nose ×5
unit-testing ×2
cobertura ×1
coverage.py ×1
django ×1
ipython ×1
nose2 ×1
pylons ×1
python-2.7 ×1
testing ×1
unittest2 ×1