尝试使用 pytest 在 python 3.10 上执行测试时出错

chy*_*dik 96 python pytest python-3.10

如果我尝试使用 python 3.10 执行测试,pytest则会出现以下错误:

TypeError: required field "lineno" missing from alias
Run Code Online (Sandbox Code Playgroud)

谷歌说这是一个已知问题,但我找不到解决的方法。
如果我用 3.9 启动测试,测试就会开始正常

Lew*_*erg 94

这个问题似乎在pytest 版本 6.2.5中得到了修复。

请参阅:修复 Python 3.10 上的断言重写

  • 这为我解决了问题。我运行“poetry add --dev pytest@latest”作为“poetry new”,默认将“pytest”限制为“^5.2”。 (14认同)
  • @John 我可以通过将 pytest 升级到版本“7.1.2”来解决这个问题。 (3认同)

Ben*_*ari 35

只需升级pytestPyPI 包即可:

pip install -U pytest
Run Code Online (Sandbox Code Playgroud)

  • @John我猜你的问题与“pip”本身有关。尝试通过“python -m pip install -U pip”更新“pip”或通过“python -m pip install -U pytest”安装“pytest” (2认同)
  • 我认为这是正确的答案(解决方案是更新 pytest),但运行的命令可以改进。由于我们使用诗歌来管理项目的依赖项,包括其开发依赖项,因此我们应该运行“poetry remove --dev pytest && Poetry add --dev pytest”,这将删除添加到项目中的任何版本的 pytest创建后,添加最新版本。对我来说,这意味着从“5.4.3”到“7.1.2”。此过程还删除了 pytest 旧的传递依赖项,然后为新版本添加了新的传递依赖项。 (2认同)