如何在pytest配置中指定检查根目录的setup.py文件?
解决方案:精准指定检查目标,避免扫描整个根目录
嘿,这个需求我太熟悉了——不想把根目录丢给flake8/pylint导致扫一堆无关文件夹,又想单独加setup.py进去检查对吧?其实不用在pytest的addopts里硬塞路径,直接在setup.cfg里给flake8和pylint单独配置检查范围就好,既优雅又能精准控制。
修改后的完整setup.cfg
[bdist_wheel] universal=1 [aliases] test=pytest [tool:pytest] addopts=-s tests app -vv --cov app --cov-report html --pylint --flake8 --doctest-modules -ra --no-print-logs # 新增flake8专属配置,精准指定检查目标 [flake8] # 明确列出要检查的文件和目录,不用扫描整个根目录 files = setup.py, app, tests # 可选:排除常见的无需检查的缓存/虚拟环境文件夹(防止意外扫描) exclude = .git, __pycache__, venv, htmlcov, .pytest_cache # 新增pylint专属配置,同样精准控制 [pylint] # 指定要检查的文件和模块 files = setup.py, app, tests # 排除无需检查的路径(用正则匹配) ignore-paths = ^(.git|__pycache__|venv|htmlcov|.pytest_cache)$
为什么这样配置?
- 精准锁定检查范围:通过
files参数直接列出setup.py、app和tests,flake8和pylint只会扫描这些指定内容,不会碰根目录下的其他文件夹(比如venv、htmlcov),完全不需要逐个添加忽略规则。 - 兼顾插件和单独运行:不管是通过
pytest带着--pylint/--flake8参数运行,还是单独执行flake8或pylint命令,都会读取这些配置,一举两得。 - 可选的兜底排除:加
exclude/ignore-paths是为了防止意外(比如指定目录下嵌套的缓存文件夹),但核心还是靠files参数锁定检查范围,这才是解决你问题的关键。
如果你之前担心把根目录加进去会扫一堆垃圾,现在完全不用了——我们只让工具检查我们关心的内容,其他一概不碰~
内容的提问来源于stack exchange,提问作者Charlie
相关产品推荐
相关产品推荐

