首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图理解参数化测试的pytest-xdist故障

试图理解参数化测试的pytest-xdist故障
EN

Stack Overflow用户
提问于 2015-02-13 23:55:55
回答 1查看 1K关注 0票数 0

我有一些参数化的测试,使用在忏悔测试中定义的夹具。当使用pytest-xdist时,我的测试失败了,但是通过了标准pytest。该夹具创建一个目录,然后由测试使用,我将得到IOErrors。

从输出结果看,这两个失败的参数化测试要么正在被收集,要么被多次运行。注意,在下面的输出中,test_save_loadobj2和test_save_loadobj0失败了,它们出现了两次,所以我假设它们被多次运行。我可以用不同的方式来编写测试,而不是参数化;但是我很想了解这个问题。任何关于发生了什么或者pytest-xdist是如何工作来帮助理解这个问题的想法都是非常感谢的。

谢谢!

下面是我输出的一个片段:

代码语言:javascript
复制
platform darwin -- Python 2.7.6 -- pytest-2.5.1 -- 
plugins: xdist
[gw0] darwin Python 2.7.6 cwd: /tests/unit_tests
[gw1] darwin Python 2.7.6 cwd: /tests/unit_tests
[gw2] darwin Python 2.7.6 cwd: /tests/unit_tests
[gw3] darwin Python 2.7.6 cwd: /tests/unit_tests
[gw0] Python 2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54)  -- [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
[gw2] Python 2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54)  -- [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
[gw1] Python 2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54)  -- [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
[gw3] Python 2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54)  -- [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
gw0 [30] / gw1 [30] / gw2 [30] / gw3 [30]
scheduling tests via LoadScheduling

test_save_load.py:17: test_exceptions 
test_save_load.py:135: test_save_load[obj0] 
test_save_load.py:45: test_gnome_obj_reference 
test_save_load.py:135: test_save_load[obj2] 
[gw3] PASSED test_save_load.py:17: test_exceptions 
[gw1] PASSED test_save_load.py:45: test_gnome_obj_reference 
test_save_load.py:31: test_reference_object 
[gw3] PASSED test_save_load.py:31: test_reference_object 
test_save_load.py:73: test_savloc_created 
test_save_load.py:135: test_save_load[obj4] 
[gw1] PASSED test_save_load.py:73: test_savloc_created 
test_save_load.py:135: test_save_load[obj5] 
[gw3] PASSED test_save_load.py:135: test_save_load[obj4] 
test_save_load.py:135: test_save_load[obj6] 
[gw2] FAILED test_save_load.py:135: test_save_load[obj2] 
[gw0] FAILED test_save_load.py:135: test_save_load[obj0] 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-14 13:11:11

xdist输出与标准的pytest略有不同,因为测试是并行运行的。当你看到:

代码语言:javascript
复制
test_save_load.py:135: test_save_load[obj0]

这意味着测试已经发送到其中一个节点执行。

当你看到:

代码语言:javascript
复制
[gw0] FAILED test_save_load.py:135: test_save_load[obj0] 

这意味着测试已经在节点0中完成。

话虽如此,您的测试只执行一次。您对测试失败的描述似乎表明,测试正在共享某些磁盘资源(例如,它们都试图写入同一个文件名)。

您应该确保处理文件的测试在单独的目录中工作,因此每个测试都与其他测试完全隔离;您可以在tmpdir夹具的帮助下完成这一点。

如果你发布更多关于测试本身的信息,也许人们可以给出更具体的建议。

干杯,

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28510750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档