我正在编写相当多的单元测试并使用nosetests来运行它们.Nose肯定会让它运行测试变得漂亮和容易,但是在最好的情况下输出可能会非常混乱,而在其他情况下会非常混乱,这取决于警告和错误.
我想知道是否有任何可视工具包裹鼻子以便反馈清洁.显示测试名称,运行时间以及用颜色指示成功/失败状态的结果网格将是一个巨大的视觉助手.更好的是,如果它可以根据具体情况拆分错误消息和回溯,那么当大量测试在重大更改时失败时,它将真正减少杂乱的数量.
这开始像愿望清单一样阅读,但是有什么东西甚至接近这个吗?
我已经为python 2.6安装了鼻子,它工作正常,但我尝试使用该--cover-html选项生成一个HTML报告.我从命令行输入以下命令:
nosetests --cover-html
Run Code Online (Sandbox Code Playgroud)
它运行测试但没有生成html.
我错过了什么吗?
我在我的GAE应用程序中使用gaetestbed,它运行得很好.但是,当您的测试不正确时,鼻子打印的有用语句将被App Engine的日志记录冲走:
root: Level 9: Evaling filter expression "datastore_types.Key.from_path(u'User', 85, _app=u'tipfy') == datastore_types.Key.from_path(u'User', 87, _app=u'tipfy')"
root: Level 9: Evaling filter expression "datastore_types.Key.from_path(u'User', 87, _app=u'tipfy') == datastore_types.Key.from_path(u'User', 87, _app=u'tipfy')"
root: Level 9: Evaling filter expression "datastore_types.Key.from_path(u'User', 86, _app=u'tipfy') == datastore_types.Key.from_path(u'User', 87, _app=u'tipfy')"
root: Level 9: Evaling filter expression "datastore_types.Key.from_path(u'User', 87, _app=u'tipfy') == datastore_types.Key.from_path(u'User', 87, _app=u'tipfy')"
--------------------- >> end captured logging << ---------------------
----------------------------------------------------------------------
Ran 28 tests in 3.605s
Run Code Online (Sandbox Code Playgroud)
有没有办法抑制这个,所以我只能得到干净的something != something else错误消息?
我在测试请求中发送cookie时遇到了一些麻烦.我尝试过这样的事情:
# First request to log in, retrieve cookie from response
response = self.app_client.post('/users/login', query_string={ data.. )
cookie = response.headers['Set-Cookie'] # Contains: user_hash=3f305370487731289a7f9bd8d379a1c2; Domain=.flowdev.com; Path=/
# Second request that requires the cookie
response = self.app_client.get('/users/', headers={'Set-Cookie': cookie})
# Here i print out request.cookies.get('user_hash') inside the app, which contains None
Run Code Online (Sandbox Code Playgroud)
我想这不是这么简单,但我不知道如何以正确的方式构建cookie.如何创建第二个请求,以便它在标题中的cookie中发送?
谢谢!
我想为我的Python项目创建一组基准.我希望看到这些基准测试的性能随着我引入新代码而改变.我想以与测试Python相同的方式执行此操作,方法是运行实用程序命令,nosetests并获得格式良好的读数.
nosetests该nosetests工具通过在我的目录结构中搜索任何命名的函数test_foo.py并运行其中test_bar()包含的所有函数来工作.它运行所有这些函数并打印出它们是否引发了异常.
我想要类似的东西搜索所有文件bench_foo.py并运行所有包含的函数bench_bar()并报告它们的运行时.
这样的工具存在吗?
如果不是什么好的起点?有些nose来源适合这个吗?
我正在使用unittest编写python测试并从命令行运行测试
nosetests --with-coverage -x
Run Code Online (Sandbox Code Playgroud)
当我在我的一个测试中包含numpy时,它也试图测试numpy包.示例输出:
...
Name Stmts Miss Cover Missing
-------------------------------------------------------------
CLOCK 39 33 15% 3, 7-13, 17, 20-25, 28-47
LFU 42 1 98% 52
LRU 95 9 91% 12, 64, 68, 101, 115-118, 131
LRU10 54 1 98% 68
LRU3 54 1 98% 68
argparse 1177 1177 0% 3-2361
cache 86 33 62% 36-47, 86-89, 95-116
common 87 54 38% 17, 20, 23, 28, 31-32, 35-36, 39, 42, 46, 48, 50, 52, 54, 57-64, 67-68, 72-89, 95-96, 102-107, …Run Code Online (Sandbox Code Playgroud) 我一直在考虑从鼻子切换到测试行为(摩卡/柴等等已经破坏了我).到目前为止一直很好,但我似乎无法找出除例外测试异常的方法:
@then("It throws a KeyError exception")
def step_impl(context):
try:
konfigure.load_env_mapping("baz", context.configs)
except KeyError, e:
assert (e.message == "No baz configuration found")
Run Code Online (Sandbox Code Playgroud)
用鼻子我可以用一个注释来测试
@raises(KeyError)
Run Code Online (Sandbox Code Playgroud)
我在行为中找不到这样的东西(不在源中,不在示例中,不在此处).能够指定可能在场景轮廓中抛出的异常肯定会很棒.
有人走过这条路吗?
我有一个包含大量.py文件的目录(比如test_1.py,test_2.py等).每个文件都正确编写以便与鼻子一起使用.因此,当我运行nosetests脚本时,它会在所有.py文件中找到所有测试并执行它们.
我现在想并行化它们,以便将所有.py文件中的所有测试都视为可并行化并委派给工作进程.
似乎默认情况下,执行:
nosetests --processes=2
Run Code Online (Sandbox Code Playgroud)
根本没有引入并行性,所有.py文件的所有测试仍然只在一个进程中运行
我尝试在每个.py文件中放置一个_multiprocess_can_split_ = True,但这没什么区别
感谢您的任何投入!
我正在使用nosetests来自动发现和运行我的单元测试.我还想让它生成报道报告.
当我使用以下命令运行nosetests时,一切正常
nosetests .
Run Code Online (Sandbox Code Playgroud)
我在网上查询生成覆盖率,nosetests有一个命令行参数--with-coverage.我还仔细检查了这个命令是否存在使用nosetests --help.但是,每当我运行以下命令时,我得到以下输出
nosetests --with-coverage .
Usage: nosetests [options]
nosetests: error: no such option: --with-coverage
Run Code Online (Sandbox Code Playgroud)
我仔细检查了通过运行安装coverage插件
nosetests --plugins
Run Code Online (Sandbox Code Playgroud)
覆盖率与一堆其他插件一起显示在列表中.
我也知道我已经安装了覆盖,因为我可以使用以下内容手动运行覆盖数据集:
coverage run test.py
Run Code Online (Sandbox Code Playgroud)
我是否滥用了--with-coverage选项?或者还有其他我想念的东西?
提前致谢.
我试图在PyCharm(2.7.3)中使用与python 2和3并排的鼻子测试.
在python 2.7下一切正常,但是python 3.4中的任何测试都会失败并出现以下错误:
Traceback (most recent call last):
File "/home/robert/Programme/pycharm-2.7.3/helpers/pycharm/noserunner.py", line 91, in <module>
process_args()
File "/home/robert/Programme/pycharm-2.7.3/helpers/pycharm/noserunner.py", line 88, in process_args
TestProgram(argv=argv, config=config)
File "/usr/local/lib/python3.4/dist-packages/nose/core.py", line 121, in __init__
**extra_args)
File "/usr/lib/python3.4/unittest/main.py", line 93, in __init__
self.runTests()
File "/usr/local/lib/python3.4/dist-packages/nose/core.py", line 207, in runTests
result = self.testRunner.run(self.test)
File "/usr/local/lib/python3.4/dist-packages/nose/core.py", line 62, in run
test(result)
File "/usr/local/lib/python3.4/dist-packages/nose/suite.py", line 177, in __call__
return self.run(*arg, **kw)
File "/usr/local/lib/python3.4/dist-packages/nose/suite.py", line 224, in run
test(orig)
File "/usr/local/lib/python3.4/dist-packages/nose/suite.py", line 177, in __call__
return self.run(*arg, **kw) …Run Code Online (Sandbox Code Playgroud) nosetests ×10
python ×7
nose ×4
unit-testing ×3
testing ×2
bdd ×1
benchmarking ×1
cookies ×1
coverage.py ×1
flask ×1
numpy ×1
pycharm ×1
python-2.7 ×1
python-3.x ×1
suppress ×1
werkzeug ×1