当前位置: 首页 > news >正文

使用Docker容器化Python测试Pytest项目并配置GitHub Actions CI/CD流程

先看实现效果!!!

前言

在软件开发过程中,自动化测试和持续集成/持续部署(CI/CD)已经成为现代开发流程中不可或缺的部分。本文将详细介绍如何将一个Python测试项目容器化,并配置GitHub Actions实现自动化测试流程。

项目准备

首先,我们需要创建一个基本的Python测试项目结构:

text

.
├── src/                  # 源代码目录
│   └── calculator.py     # 计算器实现
├── tests/                # 测试代码目录
│   └── test_calculator.py # 单元测试
├── .gitignore            # Git忽略规则
└── README.md             # 项目说明文档

1. 创建.gitignore文件

为了避免将不必要的文件提交到版本控制系统,我们首先创建.gitignore文件:

powershell

@"
# Python
__pycache__/
*.pyc
.venv/
venv/# IDE
.vscode/
.idea/# 其他
.DS_Store
"@ > .gitignore

2. 添加项目说明文档

创建README.md文件描述项目结构和使用说明:

powershell

@"
# 计算器测试项目## 项目结构
.
├── src/ # 源代码
│ └── calculator.py # 计算器实现
└── tests/ # 测试代码
└── test_calculator.py # 单元测试## 使用说明
```bash
# 运行测试
pytest tests/ -v

"@ > README.md

text

## 配置GitHub Actions自动化测试在项目中创建`.github/workflows/ci.yml`文件,配置自动化测试流程:```yaml
name: CI Pipeline
on: [push]jobs:test:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3- uses: actions/setup-python@v4with:python-version: "3.11"- run: pip install pytest- run: python -m pytest tests/ -v

Docker化Python测试项目

1. 创建Dockerfile

dockerfile

FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 复制项目文件到容器中
COPY . .# 安装依赖
RUN pip install -r requirements.txt# 运行pytest测试
RUN pytest tests/# 设置容器启动时运行的命令(根据你的项目需求修改)
CMD ["python", "src/main.py"]

2. 创建requirements.txt

bash

echo "pytest" > requirements.txt

3. 配置Docker镜像加速

为了提高Docker镜像构建速度,我们可以配置镜像加速器:

bash

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://","https://docker.m.daocloud.io"],"dns": ["8.8.8.8", "114.114.114.114"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

4. 构建并运行Docker容器

bash

docker build -t my-pytest-app .
docker run -it --rm my-pytest-app /bin/bash

在容器内运行测试:

bash

pytest tests/

常见问题解决

  1. Git推送失败

    text

    error: failed to push some refs to 'https://github.com/...'
    hint: Updates were rejected because the remote contains work that you do not
    hint: have locally.

    解决方法:先执行git pull origin master拉取远程更改,再推送。

  2. Docker构建时找不到requirements.txt

    text

    ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'

    解决方法:确保项目根目录下有requirements.txt文件。

  3. 网络连接问题

    text

    fatal: unable to access 'https://github.com/...': Failed to connect to github.com port 443

    解决方法:检查网络连接,或配置代理。

总结

通过本文的介绍,我们完成了以下工作:

  1. 创建了一个基本的Python测试项目结构

  2. 配置了.gitignore和README.md

  3. 设置了GitHub Actions自动化测试流程

  4. 将项目Docker化并配置了镜像加速

  5. 解决了常见的Git和Docker相关问题

这套流程可以帮助开发者实现:

  • 代码版本控制

  • 自动化测试

  • 环境一致性保证

  • 持续集成/持续部署

http://www.dtcms.com/a/333277.html

相关文章:

  • IgH初始化--未接从站
  • 一站式学会——进制转换与位运算符详解(通俗易懂)
  • ElasticSearch不同环境同步索引数据
  • 20250815在荣品RD-RK3588-MID开发板的Android13下调通TP芯片FT8206
  • linux安装docker-compose
  • STM32在使用DMA发送和接收时的模式区别
  • 使用C# 高效实现 Word 文档内容查找与替换的6种方法
  • Java 调用 Python 脚本:实现 HelloWorld
  • 数据驱动测试提升自动化效率
  • 车辆减振器异响测试系统
  • [Pyro] 基础构件 | 随机性sample | 可学习参数param | 批量处理plate
  • find命令解读
  • 重塑工业设备制造格局:明远智睿 T113-i 的破局之道
  • 2025北京世界机器人大会:技术、场景、生态实现三重跃迁
  • ARM+OpenPLC 组合详解及经典示例
  • MySQL → SQL → DDL → 表操作 → 数据类型 知识链整理成一份系统的内容
  • 基于 ArcFace/ArcMargin 损失函数的深度特征学习高性能人脸识别解决方案
  • pandas中df.to _dict(orient=‘records‘)方法的作用和场景说明
  • 题解:CF2127D Root was Built by Love, Broken by Destiny
  • CUDA × JetPack 初学者全指南
  • Python工具箱系列(六十四)
  • go语言运算符·关系运算符
  • sql CURRENT_TIMESTAMP
  • 【DSP28335 事件驱动】唤醒沉睡的 CPU:外部中断 (XINT) 实战
  • java注释功能
  • ESP32-C3_TCP
  • Linux操作系统从入门到实战(二十二)命令行参数与环境变量
  • 信刻光盘摆渡系统案例——某省纪委
  • 微服务容错与监控体系设计
  • 生存主义:隐形异变 (Survivalist: Invisible Strain)免安装中文版