ImportError:使用pytest测试时,无法导入名称“ transfer_markers”

时间:2019-01-06 19:13:08

标签: python pytest

当我通过运行以下命令为python项目运行测试时:

python setup.py test
(or)
pytest project_name

我收到以下错误:

.../project_name/.eggs/pytest_asyncio-0.9.0-py3.6.egg/pytest_asyncio/plugin.py", line 8, in <module>
from _pytest.python import transfer_markers

ImportError: cannot import name 'transfer_markers'

2 个答案:

答案 0 :(得分:10)

当我在网上查找时,几乎没有任何地方提到该特定错误消息。在以前可以正常工作的代码中断之前,我发生过几次类似的事情,这通常是因为有一个重要软件包的新版本。

我看着pytest release history,看起来pytest==4.1.0已在几个小时前发布(截至本文)。

解决方案是通过运行以下命令来还原到pytest的最后一个稳定版本,即pytest==4.0.2

pip install pytest==4.0.2

测试正在运行。

答案 1 :(得分:2)

pytest-asyncio已更新为0.10.0

pytest-asyncio使用的是transfer_markers,该标记在pytest 4.1.0中已删除。 看起来像是已修复并已发布。 问题#105

编辑:您现在可以升级MessageSerializer.sourceMessageSerializer 来解决此问题。

或在您的requirements.txt中更新pip install pytest-asyncio==0.10.0

如果您先前安装了pytest 4.0.2来临时解决问题,请不要忘记运行pytest-asyncio==0.10.0来保持pytest的最新状态