GitHub Action实现Python unittest遍历子目录测试的问题
解决unittest discover无法找到测试文件的问题
以下是几个可行的解决办法,按优先级排序:
1. 调整测试文件名符合默认匹配规则
unittest的discover命令默认只匹配以test_开头的Python文件(默认模式为test*.py)。你的测试文件名为test.py,不符合这个规则,因此无法被自动识别。
将ex1/test.py改名为test_ex1.py,ex2/test.py改名为test_ex2.py,之后在仓库根目录运行:
python -m unittest discover -s python
该命令会自动递归遍历python目录下所有符合规则的测试文件。
2. 保留原文件名,修改discover的匹配参数
如果不想修改文件名,需要明确指定匹配模式并确保子目录可被遍历:
- 先在
python/ex1和python/ex2目录下创建空的__init__.py文件(让Python将这些子目录识别为可导入的包,确保discover能递归遍历)。 - 然后运行命令:
python -m unittest discover -s python -p "test.py"
注意:在GitHub Action的bash环境中,建议用双引号包裹模式,避免shell解析异常。
3. 直接指定所有测试文件路径
如果以上方法都不适用,可以直接列出所有测试文件的路径来运行:
python -m unittest python/ex1/test.py python/ex2/test.py
这种方式不依赖discover的自动查找,适合目录结构简单的场景。
GitHub Action配置示例
将上述命令写入你的GitHub Action workflow文件(比如.github/workflows/test.yml),示例配置如下:
name: Run Python Tests on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.x' - name: Run tests run: python -m unittest discover -s python -p "test.py"
内容的提问来源于stack exchange,提问作者Thomas E
相关产品推荐
相关产品推荐

