首页 > 解决方案 > Pytest 未在子目录中找到所有测试

问题描述

我无法让 pytest 在所有子目录中运行我的所有测试用例

当我pytest -v -sProject目录中运行时,它最终只能找到所有测试用例ComponentB而无法找到ComponentA测试用例。

pytest当我导航到相应的组件目录并运行命令时,测试用例运行良好。为什么 pytestComponentA在顶层运行时会跳过?

Project/
|____ComponentA/
|   |____srcs
|   |____tests
|        |__test_A_1.py
|        |__test_A_2.py
|        .
|        .
|        .
|____ComponentB/
|   |____srcs
|   |____tests
|        |__test_B_1.py
|        |__test_B_2.py
|        .
|        .
|        .

标签: pythonpython-3.xpytest

解决方案


我假设您问题中的文件名只是示例,但请检查您的真实文件名是否符合测试发现的约定:

Pytest 实现了以下标准测试发现:

  • 如果未指定参数,则收集从 testpaths(如果已配置)或当前目录开始。或者,命令行参数可用于目录、文件名或节点 ID 的任意组合。
  • 递归到目录,除非它们匹配 norecursedirs。
  • 在这些目录中,搜索 test_*.py 或 *_test.py 文件,由它们的测试包名称导入。
  • 从这些文件中,收集测试项目:
    • 在类外测试前缀测试函数或方法
    • 测试前缀测试类中的测试前缀测试函数或方法(没有init方法)

推荐阅读