You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用通配符*执行pytest tests/*时测试模块重复收集执行的问题

问题分析与解决

你遇到的问题根源是shell路径展开导致pytest重复识别测试模块:
当执行pytest tests/*时,shell会将*通配符展开为tests目录下的所有文件/子目录(比如tests/__init__.py、tests/TestEndToEndDemo.py)。pytest在处理这些参数时,会同时做两件事:

  • 把tests/当作一个Python包(因为存在__init__.py),递归扫描并导入tests.TestEndToEndDemo模块
  • 把单独的tests/TestEndToEndDemo.py当作独立模块导入

这就导致同一个测试模块被加载了两次,里面的测试用例自然执行两次。

解决方法

1. 直接指定tests目录而非通配符

用pytest tests/替代pytest tests/*,pytest会将tests目录作为一个完整的包来处理,递归扫描所有测试模块,不会出现重复收集的问题。

2. 避免shell展开的影响(可选)

如果一定要用通配符,给路径加引号让pytest自己处理通配符:

pytest "tests/*"

这样pytest会自己解析通配符,而不是让shell提前展开,就能避免重复识别。

额外说明

你的测试模块里的@staticmethod测试用例和@pytest.fixture不是问题根源——毕竟直接指定单个文件时测试正常执行。核心问题还是路径参数的传递方式导致的重复模块导入。

内容的提问来源于stack exchange,提问作者Nico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 11:15:37