Pytest xdist和参数化测试是否按每个线程执行设置?

时间:2018-04-24 06:48:18

标签: python pytest xdist

我有一个用pytest运行的测试文件

该文件具有参数化测试以及我希望它在任何测试运行之前只运行一次的设置,在该设置上我执行无法并行执行的操作(写入文本文件)。

该设置就像这样

{{1}}

当我使用no -n参数运行时,一切正常

当我使用-n运行时,我遇到的问题是因为两个线程同时进行了设置

这是xdist的工作方式吗?设置是按线程进行的?是否有任何范围可以确保我在每个线程开始运行测试之前只进行一次设置?

2 个答案:

答案 0 :(得分:2)

  

这是xdist的工作方式吗?设置是按线程进行的?

是。 Sesion范围的灯具在一个过程中完全支持(当不使用xdist时,一个全局夹具,否则每个xdist工人一个夹具)

不幸的是,pytest不支持跨xdist worker共享fixture。这是issue报告的相同内容。

答案 1 :(得分:0)

https://github.com/pytest-dev/pytest-xdist#making-session-scoped-fixtures-execute-only-once建议将共享资源写入文件并对其进行锁定,以防止重新执行代码。