Jenkins中Python自动化流水线配置指南
在 Jenkins 中配置 Python 自动化流水线,并支持 CSV 数据驱动测试 和 Allure 测试报告,可以按照以下步骤操作:
1. 环境准备
1.1 Jenkins 插件安装
确保 Jenkins 已安装以下插件:
1.2 Python 环境配置
pip install pytest allure-pytest pandas pytest-csv
2. 项目结构
假设项目目录结构如下:
project/
├── tests/
│ ├── test_demo.py # 测试脚本
│ └── data/
│ └── test_data.csv # CSV 测试数据
├── Jenkinsfile # 流水线定义
└── requirements.txt # Python 依赖
3. 编写测试脚本(支持 CSV 和 Allure)
3.1 CSV 数据驱动测试示例
test_demo.py:
import pytest
import pandas as pd
import allure
# 从 CSV 读取测试数据
def load_test_data():
return pd.read_csv('tests/data/test_data.csv').to_dict('records')
@allure.feature('CSV 数据驱动测试')
@pytest.mark.parametrize('data', load_test_data())
def test_with_csv_data(data):
with allure.step(f"测试数据: {data}"):
assert data['input'] == data['expected'], f"测试失败: {data}"
3.2 生成 Allure 报告
运行测试时添加 Allure 参数:
pytest --alluredir=./allure-results
4. 配置 Jenkinsfile
4.1 基础流水线脚本
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/your-repo.git'
}
}
stage('Setup Python') {
steps {
sh 'pip install -r requirements.txt'
}
}
stage('Run Tests') {
steps {
sh 'pytest tests/ --alluredir=./allure-results --csv=./report.csv'
}
}
stage('Publish Reports') {
steps {
// 发布 Allure 报告
allure includeProperties: false,
jdk: '',
results: [[path: 'allure-results']]
// 发布 CSV 报告(可选)
publishHTML target: [
allowMissing: false,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir: '.',
reportFiles: 'report.csv',
reportName: 'CSV 测试报告'
]
}
}
}
}
4.2 参数化构建(可选)
支持通过 Jenkins 参数动态传递测试配置:
parameters {
string(name: 'TEST_DATA_PATH', defaultValue: 'tests/data/test_data.csv', description: 'CSV 数据路径')
}
stage('Run Tests') {
steps {
sh "pytest tests/ --alluredir=./allure-results --csv=./report.csv --test-data=${params.TEST_DATA_PATH}"
}
}
5. Allure 报告高级配置
5.1 自定义 Allure 环境变量
在项目中创建 allure-environment.properties 文件:
Python.Version=3.8.5
Jenkins.Build=${BUILD_NUMBER}
流水线中追加环境信息:
stage('Run Tests') {
steps {
sh 'echo "BUILD_URL=${BUILD_URL}" >> allure-results/environment.properties'
}
}
5.2 历史趋势图
在 Jenkins 系统配置中设置 Allure 的 History 目录路径,确保多次构建的报告可对比。
6. 邮件通知(可选)
在流水线末尾添加邮件通知:
post {
always {
emailext body: '测试报告:${BUILD_URL}allure/',
subject: '自动化测试结果: ${JOB_NAME} - ${BUILD_NUMBER}',
to: 'team@example.com'
}
}
7. 完整流程图示
Jenkins 触发构建
拉取代码
安装 Python 依赖
运行 pytest + Allure + CSV
发布 Allure 报告
发布 CSV 报告
邮件通知团队
常见问题解决
-
Allure 报告空白
- 确保
allure-results目录生成后未被清理。 - 检查 Jenkins 的 Allure 插件版本是否兼容。
-
CSV 数据读取失败
- 使用绝对路径:
/var/lib/jenkins/workspace/project/tests/data/test_data.csv。 -
Python 环境冲突
- 使用
virtualenv或 Docker 容器隔离环境。
通过以上配置,你的 Jenkins 流水线将同时支持 CSV 数据驱动测试 和 Allure 可视化报告。根据实际需求调整路径和参数即可!
作者:心 一