如何通过GitHub Workflows在部署前测试Python Azure Function App
解决GitHub Workflow中pytest找不到tests目录的问题
完全可以通过GitHub Workflow运行单元测试,你遇到的问题核心是Workflow环境中代码未正确拉取或命令执行路径不对,以下是具体修复方案:
1. 必须添加代码Checkout步骤
GitHub Workflow默认不会自动拉取仓库代码,必须显式加入actions/checkout步骤,否则工作目录为空,自然找不到tests文件夹。
示例Workflow片段:
jobs: test: runs-on: ubuntu-latest steps: - name: 拉取仓库代码 uses: actions/checkout@v4 # 这一步是基础,必须添加 # 后续Python环境配置、依赖安装、测试执行步骤
2. 确认测试命令的工作目录
如果你的tests目录不在仓库根目录,或者Workflow中切换了工作路径,需要通过working-directory参数指定正确路径,或者在pytest命令中写全目录路径。
比如项目结构是:
仓库根目录/ src/ function_app.py tests/ test_function.py
需确保测试命令在根目录执行:
- name: 运行单元测试 working-directory: ./ # 指定为仓库根目录 run: python -m pytest tests -v
3. 完整测试Job示例(适配Azure Function App场景)
以下是包含环境配置、依赖安装、测试运行的完整Job代码,可直接嵌入你的部署Workflow:
jobs: 单元测试: runs-on: ubuntu-latest steps: - name: 拉取仓库代码 uses: actions/checkout@v4 - name: 配置Python环境 uses: actions/setup-python@v5 with: python-version: '3.11' # 替换为你的Azure Function App使用的Python版本 - name: 安装依赖 run: | python -m pip install --upgrade pip pip install -r requirements.txt # 安装项目依赖(需确保requirements.txt包含pytest) pip install pytest # 如果requirements.txt未包含pytest,单独安装 - name: 运行单元测试 run: python -m pytest tests -v
4. 调试目录结构(可选)
若仍有问题,可添加步骤打印当前目录文件,确认tests目录是否存在:
- name: 查看目录结构 run: ls -la
只要确保代码拉取完整、工作路径正确、依赖安装齐全,就能和本地一样正常运行pytest测试。之后可将测试Job与Azure部署Job关联,设置为测试通过才触发部署。
内容的提问来源于stack exchange,提问作者Rebe
相关产品推荐
相关产品推荐

