CI&CD落地实践8-Jenkins接入Pytest+Allure自动化测试项目

前言

本篇文章将重点介绍Jenkins如何接入Pytest+Allure自动化测试项目。Jenkins环境搭建相关及Jenkins接入前后台项目可参考前面几篇文章:

一、测试框架集成Allure

在开始配置Jenkins项目前,先简单介绍一下我的Python自动化测试项目构成:

1.测试用例添加标签

2.定义测试报告工具类

报告工具类的主要作用是:针对不同系统运行不同的allure,Windows运行的是'allure.bat',Linux系统运行的是'allure'。

import os
import sys
import platform

path = os.path.join(os.path.dirname(os.path.dirname((os.path.abspath(__file__)))), 'lib')
allure_path = os.path.join(path, 'allure', 'bin')
sys.path.append(allure_path)


class Report:
    """报告工具类"""

    @property
    def allure(self):
        if platform.system() == "Windows":
            cmd = os.path.join(allure_path, 'allure.bat')
        else:
            cmd = os.path.join(allure_path, 'allure')
        return cmd

这里有个小技巧:将下载好的allure工具存放至lib目录下,这样无论是上传代码到Git、到其他电脑上拉取,还是打包整个工程,都不用再独立安装allure。

3.设计测试用例调度策略

比如我要实现的是某个项目例如rs项目的测试,因此我只需要实现Python3运行test_case目录下rs项目对应的测试用例即可,这里可以在main目录下设计一个用例执行文件'run_testcase_with_allure.py',运行带有指定标签的测试用例,例如前面定义的'rs_smoke'标签。

# coding:utf-8
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))
import threading
import pytest
from api_test.common.report import Report

project_root = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))  # 获取当前文件的父级目录
report_dir = os.path.join(project_root, 'report')  # 指定报告目录
result_dir = os.path.join(report_dir, 'allure_result')  # 指定存放测试结果的目录
allure_report = os.path.join(report_dir, 'allure_report')  # 指定存放allure报告的目录

report = Report()  # 实例化报告类

# 定义标签,运行带有指定标签的测试用例,标签可以是名称,也可以是表达式
tag = "rs_smoke"


def run_pytest():
    pytest.main(["-v", "-s", "-m", f"{tag}", f"--alluredir={result_dir}"])


def generate_report():
    cmd = f"{report.allure} generate {result_dir} -o {allure_report} --clean"
    print(os.popen(cmd).read())


if __name__ == '__main__':
    run = threading.Thread(target=run_pytest)
    gen = threading.Thread(target=generate_report)
    run.start()
    run.join()
    gen.start()
    gen.join()

当然还有其他很多种用例调度的方式,例如通过pytest中的'-k'参数匹配指定的测试用例文件、测试用例类等,只要能正常驱动用例运行即可。

4.生成报告逻辑

上述用例调度策略中的run_pytest和generate_report方法使用的是离线生成测试报告,转换成命令行其实就是:

pytest -v -s -m "rs_smoke" --alluredir=./report_allure
allure generate allure_report -o report

执行generate命令后,会生成一个report的目录,通过该目录下的index.html即可访问离线报告:

生成报告如下:

二、Jenkins执行机配置Python3&Allure

我的Jenkins分布式环境部署情况如下:

节点

服务器地址

系统

Master-主节点

192.168.1.20

Linux

Slave-从节点1

192.168.1.122

Linux

Slave-从节点2

192.168.1.188

Windows

Jenkins接入自动化测试项目需要提前准备好项目的运行环境:Python3环境、Allure工具、Jenkins-Allure插件等。

1.执行机安装Python3

Linux(CentOS)操作系统安装Python3可参考前面的一篇文章《Linux下一键安装Python3&更改镜像源&虚拟环境管理技巧》

2.执行机配置Allure工具

① 将allure-2.17.2.zip上传到执行机并解压:

unzip allure-2.17.2.zip
mv allure-2.17.2 allure

② 配置allure环境变量

编辑/etc/profile配置文件,添加如下两行内容:

export ALLURE_HOME=/home/allure

export PATH=${PATH}:${ALLURE_HOME}"/bin"

source /etc/profile

输入allure --version显示版本或allure --help返回帮助信息则表示配置成功

3.执行机Jenkins-Allure插件安装及配置

1)Jenkins安装Allure插件

插件中心搜索Allure插件安装

2)Jenkins全局工具配置中配置Allure安装目录

有两种方式,一种是自动安装,一种是手动安装。由于前面我们已经安装并配置完allure,因此取消勾选“自动安装”即可。别名可以任取,安装目录为allure前面安装的目录:

三、Jenkins配置构建信息

1.配置Git仓库

新建一个自由风格的项目,在General中配置Git仓库地址,配置如下:

2.配置构建步骤

在Build Steps中增加构建步骤,选择“执行shell”

shell 脚本内容如下:

#!/bin/bash
path=$WORKSPACE/api_test/main/
cd $WORKSPACE/api_test/lib/allure/bin && chmod +x allure
source /home/python_venv/auto_test/bin/activate && cd $path && python run_testcase_with_allure.py

3.配置“构建后的操作”

构建后的操作中选择“Allure Report”,驱动allure生成测试报告

如上图所示,本代码工程指定的存放allure result的相对路径为:工程目录/api_test/report/allure_result,则在Jenkins的path配置中只需要填上“api_test/report/allure_result”

4.测试构建

手动触发构建

尝试切换命令行执行,仍然报同样的错误:

在网上查找了一下,原来是依赖库没有安装完整,缺少了allure-pytest这个库,将其安装即可:

pip install allure-pytest

再次执行构建,构建成功:

生成的allure报告如下:

企微消息通知发送成功:

小结

以上就是本次在Jenkins中接入Pytest+Allure自动化测试项目的全过程。

由于软件交付频率的加速,手动执行测试变得不切实际,自动化测试可以有效地减少测试周期,提高测试的覆盖率和质量,并且可以避免人为错误。因此,自动化测试与 CI&CD 密不可分,是 CI&CD 中一个至关重要的部分。

展开阅读全文

页面更新:2024-04-29

标签:测试   项目   节点   插件   定义   标签   环境   目录   工具   报告

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top