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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:29:53