Jenkins+Pytest+Allure集成测试环境

车胄
• 阅读 4163

内容简介

本文会介绍如何从0到1构建Python项目的集成测试环境,文中会详细提及部署过程中会遇到的各种问题。

  • Pytest负责Python代码测试
  • Allure负责测试报告HTML界面展示
  • Jenkins负责自动化

部署环境为MacOS,在Windows或Linux下可以通过类似的方式部署与操作,此外也会给出对应的参考链接。

Jenkins+Pytest+Allure集成测试环境

正文

首先需要安装Jenkins,Jenkins依赖于JDK,所以需要先安装Java JDK,这块不赘述,随后安装Jenkins,在MacOS中可以通过HomeBrew安装。

brew install jenkins

如果你brew install很慢,可以参考本文最后的技巧[1]。

当然,你可以直接通过Docker进行安装,jenkins在Docker Hub中提供了官方的源.

docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins

我使用brew安装,安装完后,使用如下命令运行jenkins

$ jenkins

此时jenkins将会显式的运行在命令行终端,并且创建~/.jenkins目录作为JENKINS_HOME,localhost:8080作为默认URL。

启动时,Jenkins会给出初始的密码,该密码会在JENKINS_HOME的secrets/initialAdminPassword中。

登录后,Jenkins会要求你安装一些插件,此时出现第一个坑,安装插件速度极慢,可以参考技巧[2]来解决这个问题,通过技巧[2]修改配置后,可以通过技巧[3]来重启Jenkins

Jenkins安装有几个关键点。

  • 1.安装前知道自己安装的是什么版本的Jenkins,因为allure在Jenkins中的插件对Jenkins有版本要求
  • 2.知道JENKINS_HOME的位置

Jenkins+Pytest+Allure集成测试环境

allure是一种支持多种编程语言的可视化测试报告工具,allure在jenkins中的插件让Jenkins可以轻松调用allure(有坑),而allure在pytest的插件主要是为了让pytest可以生成满足allure要求的测试信息文件。

通过allure插件,将jenkins、pytest、allure链接在一起,pytest负责测试,测试生成的报告可以通过allure生成图像化界面,而jenkins自动化两个过程。

在MacOS中,allure同样通过通过Homebrew安装。

brew install allure

allure在Windows与Linux的安装方式参考:https://github.com/allure-fra...

allure安装完后,先来安装allure关于pytest的插件,顺带将pytest也安装了。

pip install pytest==5.3.5
pip install allure-pytest==2.8.9
pip install allure-python-commons==2.8.9

安装完后,可以先来使用一下。

找一个使用Pytest的项目,直接去github拉取requests库,它的tests目录写满了通过pytest构建的测试用例。

通过pytest运行requests/tests中的代码并通过--alluredir指定生成数据的文件夹,这些数据就是allure可读取的数据,通常为一堆JSON文件。

pytest requests/tests --alluredir=./allure-results

获得JSON文件数据后,可以通过allure generate命令来生成HTML测试报告界面。

allure generate allure-results -o allure-report --clean

通过上述命令,allure会将测试报告生成到allure-report目录中,至此整个流程走通了一半。

Jenkins+Pytest+Allure集成测试环境

接着来安装Allure在Jenkins中的插件。

进入Jenkins的插件管理界面,安装「Allure Jenkins Plugin」,此外为了更好的显示HTML测试报告,继续安装「HTML Publisher Plugin」。

Jenkins+Pytest+Allure集成测试环境

「Allure Jenkins Plugin」安装完后,还需要进行配置,进入「系统设置」->「Global Tool Configuration」。

Jenkins+Pytest+Allure集成测试环境

进行如下配置,From Maven Central选择了当前最新版2.13.1。

Jenkins+Pytest+Allure集成测试环境

配置完后,将Jenkins重启,让Jenkins加载最新安装的插件。

Jenkins插件安装完后,在Jenkins中创建Freestyle project,Description描述可以随便填写,在Build构建处,选择Execute Shell,如果你是windows,则选择Execute Windows batch command。

因为我在MacOS下执行,所以选择Execute Shell,输入如下Shell代码

#!/bin/bash
cd /Users/ayuliao/Desktop/workspace/CICD
source venv/bin/activate
pytest requests/tests --alluredir "${WORKSPACE}/target/allure-results"
exit 0

cd进入相应的目录,然后通过source激活相应的Python虚拟环境,我只在该虚拟环境中安装了pytest库,随后正常使用pytest则可,此时依旧使用pytest来跑requests/tests中的测试代码,但--alluredir设置的路径非常有讲究

简单而言, --alluredir必须为"${WORKSPACE}/target/allure-results",因为Jenkins通过插件调用allure genera命令时,传入的路径固定为${WORKSPACE}/target/allure-results

${WORKSPACE}是Jenkins内置的变量,表示「分配给构建作为工作空间的目录的绝对路径。」。

如果--alluredir为其他值,通过Jenkins构建项目时,会抛出allure-results does not exists,你可以在「https://github.com/jenkinsci/...」看见问题的具体细节。

此外,还需要配置Post-build Actions构建后的动作,这里也非常关键。

选择「Allure Report」,将Results与Report Path分别配置成target/allure-resultstarget/allure-report,这是固定的,不要看其注释说你可以随意配置。

Jenkins+Pytest+Allure集成测试环境

Jenkins+Pytest+Allure集成测试环境

上述配置之所以是固定的,需要看Jenkins Job中的console output,jenkins调用allure generate命令是固定的。

$ /Users/ayuliao/.jenkins/tools/ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation/allure/bin/allure generate "/Users/ayuliao/.jenkins/workspace/allures report/target/allure-results" -c -o "/Users/ayuliao/.jenkins/workspace/allures report/target/allure-report"

如果将Results与Report Path配置成其他值,会出现各种问题。

至此大功告成。

Jenkins+Pytest+Allure集成测试环境

技巧

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
凯文86 凯文86
4年前
Spring Boot API 服务测试指南
SpringBoot除了简化了Spring应用的开发,同时也简化了Spring应用的测试。它内置支持各种常用测试工具,包括SpringTest、JUnit、TestNG、Mockito、AssertJ等。本文将讲解如何编写单元测试和集成测试来保障SpringBootAPI应用不同层级代码的质量,其中会涉及到使用嵌入式的H2数据库
Stella981 Stella981
3年前
CentOS 7 部署Gitlab+Jenkins持续集成(CI)环境
持续集成概述及运行流程:持续集成概述:持续集成(Continuousintegration)持续集成是指开发者在代码的开发过程中,可以频繁的将代码部署集成到主干,并进行自动化测试 开发→代码编译→测试持续交付:持续交付指的是在持续集成的环境基础之上,将代码部署到预生产环境持续部署:在持续交付的基础上,把部署到
Stella981 Stella981
3年前
Jmeter+ant+Jenkins实现接口自动化平台及报告发送
项目中实现了比较方便的自动化体系,一直没时间总结一下,现抽空整理一番,废话不多说 内容如下:一、环境准备jmeter:编写接口脚本,实现接口测试ant :静默执行jmeter脚本,并生成测试报告jenkins :集成接口测试到项目流程,实现定时运行及接口测试报告邮件发送\以上准备工作
Stella981 Stella981
3年前
Linux下部署python selenium UI自动化测试
之前写的pythonUI自动化一直在本地运行。后面去申请专门的windows机器来跑。因为对Jenkins下执行windows脚本不是很熟悉,集成到jenkins的时候遇到大量问题没法解决,另外一个原因就是linux下运行效率更高。。所以想尝试把UI自动化脚本部署到Linux机器上去。因为没有图像界面所以就需要用到无头浏览器了,目前方案有3个可
Easter79 Easter79
3年前
TiDB 压力测试报告
TiDB压力测试报告(转载自公众号DBATech)一、测试环境1、tidb集群架构:测试使用最基本的TiDB架构。即3个tidbserver节点3个tikv节点3个pd节点。2、tidb集群的部署环境(混合部署):192.168.xx.A1\server1\PD1\tikv192.
Stella981 Stella981
3年前
Docker学习8
前言相信不少小伙伴之前在用docker运行jenkins容器构建的时候,发现没有python3环境遇到了不少麻烦,导致无法运行测试脚本,但不要紧,安装就好了。接下来我们说用docker运行jenkins 构建自动化测试脚本。一、jenkins新建项目1、createnewjobs:输入项目名称后,选择自由风格
Stella981 Stella981
3年前
Jenkins配置下拉菜单联动效果
  在使用Jenkins集成时,经常需要配置一些环境信息,由于测试、线上、预发布需要切换环境和域名,需要在Jenkins中配置下拉菜单联动效果。  首先选择参数化构建过程,然后首先配置环境,环境分为:测试环境、预发布环境、正式环境,选择的组件为ChoiceParameter,Name定义为environment,选项为test、pre、onli
Stella981 Stella981
3年前
Jenkins+RF持续集成测试(一) 环境搭建
通常在自动化测试中,我们需要对自动化测试用例定时构建,并生成报告并通过邮件发给指定的人。最佳工具选择莫过于Jenkins了。通过Jenkins集成robotframework插件,我们能非常方便的定时从git/svn上拉取最新的自动化测试用例,然后执行用例并把最终结果以测试报告的形式发给指定的人群。下面我就来详细为大家介绍一下Jenkins集成RF插件
Stella981 Stella981
3年前
Jenkins自动化部署入门(一)
开始使用Jenkins这一段时间,技术总监为了减少测试环境每次提交新增接口都要部署项目的时间,搞了一个jenkins持续集成github、docker,这样只要每次push代码都会自动部署,确实节省了部署的时间(不加班指日可待)。今天主要给大家介绍使用Jenkins的基本知识,顺便提一嘴jdk环境和docker如何
车胄
车胄
Lv1
入春才七日,离家已二年。
文章
2
粉丝
0
获赞
0