当前位置: 首页 > 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.xdnf.cn/news/1304047.html

相关文章:

  • Pytest项目_day16(yaml和parametrize结合)
  • week1-[循环嵌套]蛇
  • Vue2与Vue3生命周期函数全面解析:从入门到精通
  • Linux操作系统--多线程(锁、线程同步)
  • 基本电子元件:贴片电阻器的种类
  • 达梦数据库使用控制台disql执行脚本
  • Mac(二)Homebrew 的安装和使用
  • HDFS数据倾斜导致MapReduce作业失败的排查与优化实践
  • 一个集成多源威胁情报的聚合平台,提供实时威胁情报查询和播报服务、主动拦截威胁IP,集成AI等多项常用安全类工具
  • mac 通过homebrew 安装和使用nvm
  • 16进制pcm数据转py波形脚本
  • 超越模型中心:AI智能体(Agent)革命来临,AgenticOps将如何颠覆你的工作流?
  • Java-JVM是什么JVM的类加载机制
  • PAT 1064 Complete Binary Search Tree
  • 计算机网络:(十五)TCP拥塞控制与TCP拥塞控制算法
  • 【161页PPT】智慧方案企业数字化转型概述(课件)(附下载方式)
  • AutoSar AP平台功能组并行运行原理
  • [论文阅读] 人工智能 | 当Hugging Face遇上GitHub:预训练语言模型的跨平台同步难题与解决方案
  • JVM执行引擎深入理解
  • 剧本杀小程序系统开发:重构推理娱乐生态
  • 大模型幻觉涉及的违约责任探讨
  • 回路自感和回路互感
  • 补充日志之-配置文件解析指南(Centos7)
  • 德州扑克游戏术语
  • 银河麒麟服务器jar包部署自启动配置
  • 第十八讲:哈希2
  • 神经网络 小土堆pytorch记录
  • 开疆智能Ethernet转ModbusTCP网关连接测联无纸记录仪配置案例
  • 《探秘浏览器Web Bluetooth API设备发现流程》
  • 解决 MySQL 查询速度缓慢的问题