ImportError:使用pytest测试时无法导入名称'transfer_markers'

nit*_*red 6 python pytest

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

python setup.py test
(or)
pytest project_name
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

.../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'
Run Code Online (Sandbox Code Playgroud)

nit*_*red 10

当我在网上查找时,几乎没有提到任何地方的特定错误消息.在之前工作的代码刚刚破解之前,我发生了类似的事情,这通常是因为有一个重要软件包的新版本.

我查看了pytest发布历史,看起来好像pytest==4.1.0已经在几个小时前发布了(截至本文).

解决方案是恢复到pytest的最后一个稳定版本,即pytest==4.0.2运行以下命令:

pip install pytest==4.0.2
Run Code Online (Sandbox Code Playgroud)

测试现在正在运行.

  • 相关的`pytest-asyncio`问题:[#104](https://github.com/pytest-dev/pytest-asyncio/issues/104) (4认同)
  • `pytest-asyncio` 现在已经更新到 `0.10.0` 来解决这个问题。 (2认同)

M.J*_*Jin 6

pytest-asyncio 已更新至 0.10.0

pytest-asyncio 使用的是在 pytest 4.1.0 中取出的 transfer_markers。看起来它已修复并已发布。问题#105

编辑:您现在可以升级pip install pytest-asyncio==0.10.0以解决此问题。

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

pip uninstall pytest如果您之前安装了 pytest 4.0.2 以暂时解决问题,请不要忘记运行以保持 pytest 最新