如何在不跳过B101规则的情况下执行Poetry Bandit测试?
解决Bandit检测测试文件中assert的B101问题
核心思路
测试代码里的assert是pytest的标准用法,且pytest运行测试时默认不会启用Python的优化编译(-O参数),所以测试中的断言不会被移除,断言失败时测试会正常标记不通过。我们无需全局跳过B101规则,只需让Bandit忽略测试目录的B101检测,同时保留对生产代码的规则校验。
具体方案
方法1:通过pyproject.toml配置(适配Poetry项目,推荐)
在项目根目录的pyproject.toml中添加Bandit配置:
[tool.bandit] # 若不需要对测试目录做任何Bandit检测,直接排除整个目录 exclude_dirs = ["tests"] # 更精细的配置:仅在测试目录跳过B101规则,保留其他规则检测 [tool.bandit.skip] tests = ["B101"]
方法2:使用独立Bandit配置文件
在项目根目录创建.bandit文件:
[bandit] # 排除整个测试目录 exclude_dirs = tests # 或仅跳过测试目录的B101规则 skip = B101:tests
验证步骤
- 运行Bandit检查:
poetry run bandit .,确认测试文件的B101警告不再出现 - 运行测试:
poetry run pytest tests/test.py,修改断言条件(比如把"XYZ"改为其他值),确认测试会因断言失败而不通过
内容的提问来源于stack exchange,提问作者Sathish Kumar
相关产品推荐
相关产品推荐

