Pytest:子目录中pytest.ini文件的识别规则疑问
pytest配置文件加载机制问题解答
现象原因
pytest加载配置文件(如pytest.ini)的核心规则是:从你指定的测试文件/目录所在路径开始,向上递归查找,直到找到第一个合法的配置文件,或到达文件系统根目录为止,它不会向下遍历子目录去寻找配置文件。
对应你的场景:
- 当执行
pytest /folder/sub/.../tests/test_file.py时,pytest以test_file.py所在的tests目录为起点向上查找,很快就能找到/folder/sub/下的pytest.ini,因此会加载该文件。 - 当直接在
/folder目录执行pytest命令时,pytest会从当前工作目录/folder开始向上查找配置文件,而/folder本身没有配置文件,同时pytest不会主动向下搜索sub子目录里的pytest.ini,所以这个配置文件不会被加载。
外部运行时子目录配置文件的识别情况
从外部目录运行测试时,子目录中的pytest.ini是否被识别,取决于你运行命令时指定的测试目标:
- 如果指定了子目录下的测试文件/路径(比如在
/目录执行pytest /folder/sub/.../tests/),pytest会从指定路径的父目录开始向上递归查找,能找到/folder/sub/下的pytest.ini并加载。 - 如果仅在外部目录执行
pytest而不指定具体测试路径,pytest会以当前工作目录为起点向上查找,不会向下遍历子目录,因此子目录里的pytest.ini不会被识别。
内容的提问来源于stack exchange,提问作者Angry bird
相关产品推荐
相关产品推荐

