Python Pytest未在子目录中找到所有测试

Python Pytest未在子目录中找到所有测试,python,python-3.x,pytest,Python,Python 3.x,Pytest,我无法让pytest在所有子目录中运行所有测试用例 当我在Project目录中运行pytest-v-s时,它只找到ComponentB中的所有测试用例,而找不到ComponentA测试用例 当我导航到各个组件目录并运行pytest命令时,测试用例运行良好。为什么pytest在顶层运行时会跳过组件a Project/ |____ComponentA/ | |____srcs | |____tests | |__test_A_1.py | |__test_A_2.

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

当我在
Project
目录中运行
pytest-v-s
时,它只找到
ComponentB
中的所有测试用例,而找不到
ComponentA
测试用例

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

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

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

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

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

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

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

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

您可能需要子目录中的
\uuuuu init\uuuuuuuuuuuuupy
文件。@pylang-如果所有测试文件都有不同的名称,那么在Python3中没有
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuy.py
,它应该可以工作。非常奇怪。我不会重现这个问题。你能不能尝试重命名文件夹/文件,看看你是否知道这种情况是在什么情况下发生的(以及什么时候没有发生)@pylang我尝试过添加和删除
\uuu init\uuuuuuuuuupy
但没有任何效果。另一件要检查的事情是,如果你有一个类,它也必须遵循约定,例如
def Test\u MyClass():
您可能需要子目录中的
\uuuu init\uuuuuuuuuy.py
文件。@pylang-如果所有测试文件都有不同的名称,那么在Python3中没有
\uuuuuu init\uuuuuuuuuuuy.py
它应该可以工作。非常奇怪。我不会重现这个问题。你能不能尝试重命名文件夹/文件,看看你是否知道这种情况是在什么情况下发生的(以及什么时候没有发生)@pylang我尝试过添加和删除
\uuu init\uuuuuuuuuupy
但没有任何效果。另一件要检查的事情是,如果你有一个类,它也必须遵循约定,例如
def Test\u MyClass():
非常抱歉,感谢您捕捉到这一点,我提供的代码是一个示例,我使用的是测试发现格式test.*.py。非常抱歉,感谢您捕捉到这一点,我提供的代码是一个示例,我使用的是测试发现格式test.*.py。