Jenkins中Python自动化流水线配置指南

在 Jenkins 中配置 Python 自动化流水线,并支持 CSV 数据驱动测试Allure 测试报告,可以按照以下步骤操作:


1. 环境准备

1.1 Jenkins 插件安装

确保 Jenkins 已安装以下插件:

  • Pipeline(用于定义流水线)
  • Allure Report(生成 Allure 报告)
  • HTML Publisher(可选,用于发布 CSV 报告)
  • 1.2 Python 环境配置
  • 在 Jenkins 服务器或 Agent 节点上安装 Python(推荐 3.6+)。
  • 安装必要的库:
    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 报告

    邮件通知团队


    常见问题解决

    1. Allure 报告空白

    2. 确保 allure-results 目录生成后未被清理。
    3. 检查 Jenkins 的 Allure 插件版本是否兼容。
    4. CSV 数据读取失败

    5. 使用绝对路径:/var/lib/jenkins/workspace/project/tests/data/test_data.csv
    6. Python 环境冲突

    7. 使用 virtualenv 或 Docker 容器隔离环境。

    通过以上配置,你的 Jenkins 流水线将同时支持 CSV 数据驱动测试Allure 可视化报告。根据实际需求调整路径和参数即可!

    作者:心 一

    物联沃分享整理
    物联沃-IOTWORD物联网 » Jenkins中Python自动化流水线配置指南

    发表回复