Python 使用_pycache__时,pytest隐藏警告
Pytest警告在第一次运行和后续运行之间是不同的Python 使用_pycache__时,pytest隐藏警告,python,pytest,warnings,Python,Pytest,Warnings,Pytest警告在第一次运行和后续运行之间是不同的 janbet@ub/home/janbet $ cat test_x.py def test_1(): a = '\d' janbet@ub/home/janbet $ pytest test_x.py | tail -1 ========================= 1 passed, 1 warning in 0.00s ========================= janbet@ub/home/janbet $ py
janbet@ub/home/janbet $ cat test_x.py
def test_1():
a = '\d'
janbet@ub/home/janbet $ pytest test_x.py | tail -1
========================= 1 passed, 1 warning in 0.00s =========================
janbet@ub/home/janbet $ pytest test_x.py | tail -1
============================== 1 passed in 0.00s ===============================
警告在rm-r\uuuu pycache\uuuu
或touch test\u x.py
或类似内容之后再次出现
我猜这些警告是在读取.py
文件时创建的,当\uuuuupycache\uuuuuuu
可用且最新时,根本不会读取它们。这是正确的吗
有没有简单的方法可以强制
pytest
永远不要使用\uuuuupycache\uuuuuuu
?这可能不是很重要,但我非常不喜欢测试运行结果依赖于某些内部文件的情况。对于这个特定的警告,这与python的工作方式一致——编译源代码时只会忽略无效的转义序列警告(之后,pyc文件可用,不查阅来源)
您可以设置pythondotwritebytecode=1
环境变量以防止pyc写入,但随后您必须处理重复编译代码的缓慢启动成本
我建议使用一个linter来检测(例如,在默认情况下,flake8通过pycodestyle来检测)和/或一个自动修复程序来修复(例如,pyupgrade)
免责声明:我是pytest的核心开发人员,我是flake8的当前维护者,我是pycodestyle的维护者,我创建了pyupgrade甚至更好-将所有这些工具捆绑在
.pre-commit config.yml
中,让pre-commit--所有文件
做艰苦的工作:-)这里是pre-commit
的另一组!