You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pytest-bdd中实现软断言?使用时遇文件找不到错误

解决pytest-bdd结合--soft-asserts时的FileNotFoundError问题

问题根源

启用--soft-asserts参数后,pytest-soft-asserts插件会修改pytest的内部上下文,导致pytest.FEATURE_FILE(__file__)中的__file__变量指向了虚拟环境site-packages下的插件文件,而非你的项目测试脚本,因此会去错误路径寻找feature文件,触发找不到文件的错误。

解决方案

1. 替换pytest.FEATURE_FILE为显式路径

直接通过相对或绝对路径指定feature文件,避免依赖可能被插件篡改的上下文:

import os
from pytest_bdd import scenarios

# 假设feature文件和当前测试脚本在同一目录
feature_file = os.path.join(os.path.dirname(__file__), "你的feature文件名.feature")
scenarios(feature_file)

如果feature文件在其他目录,直接写相对路径(比如../features/your_feature.feature)或者拼接绝对路径即可。

2. 检查插件版本兼容性

部分版本的pytest-bdd和pytest-soft-asserts存在路径解析冲突,尝试升级到稳定兼容版本:

  • 升级pytest-bdd:pip install --upgrade pytest-bdd
  • 升级pytest-soft-asserts:pip install --upgrade pytest-soft-asserts
    如果升级后问题仍存在,可以尝试降级到已知兼容的版本组合(比如pytest-bdd6.1.1 + pytest-soft-asserts0.7.0,可根据实际测试调整)。

3. 验证路径正确性

在测试脚本开头添加路径打印,确认__file__的值是否符合预期:

import os
print(f"当前脚本路径: {__file__}")
print(f"当前脚本目录: {os.path.dirname(__file__)}")

运行时加--soft-asserts参数,查看输出的路径是否指向你的项目文件,而非site-packages下的插件文件,以此确认问题根源。

内容的提问来源于stack exchange,提问作者S_G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 10:51:16