一、环境准备     

1、Pytest      

1.1 安装python环境  

  首先确保centos7服务器已安装python3+环境,本机为python3.6

  python环境确认

  为了区分系统自带的python2.7环境,可python官网下载压缩包,解压到服务器指定目录,配置环境变量

  如解压到/usr/local/目录,配置环境变量,编辑/etc/profile,追加如下内容
 

export PATH=$PATH:/usr/local/python3/bin/

实时生效

source /etc/profile

 

1.1.2 安装pytest、 allure-python

pip3 install pytest
pip3 install allure-pytest

 

 

2 Allure基础环境安装

下载allure压缩包点我选择指定版本,上传至服务器目录,如/usr/local/,并进行解压
在此地址可以查看所有版本

https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/

tar -xvf allure-commandline-2.13.5.tgz

 

也可以将allure加入环境变量/etc/profile,vi命令编辑或者echo “” >>进行追加到末尾

可以知道 allure 的地址 

/usr/local/allure-2.13.8/bin

export ALLURE=/usr/local/allure-2.13.8/bin
export PATH=$PATH:${ALLURE}

 

 实时生效

source /etc/profile

这样就可以全局使用allure

chrony安装包centos_chrony安装包centos

 

 查看allure 的版本

allure --version
2.13.8

创建软链接

ln -s /usr/local/allure-2.13.8/bin/allure /usr/bin/allure

 

3 jenkins 的安装

jenkins 的安装可以参照

4 jenkins 创建项目并执行输出测试报告

allure插件安装,系统管理-插件管理,点击可选插件,输入allure搜索然后安装。慢慢等等安装完毕
系统管理-全局工具配置,多了一个Allure Commandline。配置如下:

1、allure 插件安装

chrony安装包centos_Jenkins_02

 

 

 

 

 

 

2、工具配置

chrony安装包centos_Jenkins_03

 

下面解释一下pytest 运行项目以及allure 的基本原理

通过 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 目录中,至此整个流程走通了一半。

这里才是重点

5 jenkins 项目设置

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

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

chrony安装包centos_python_04

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/allure-plugin/issues/201」看见问题的具体细节。

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

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

ps : 标红的是重点中的重点,不要随便配置路径,这里我是吃过大亏, 入了很多大坑的,引以为戒

chrony安装包centos_数据_05

 

 

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

至此大功告成。

chrony安装包centos_chrony安装包centos_06

 

 

chrony安装包centos_python_07

 

发现运行的结果中总是有 Build step 'Execute shell' marked build as failure   这个错误

chrony安装包centos_chrony安装包centos_08

 

 解决办法: 在shell 的第一行加上 #!/bin/bash

最后加上 exit 0

chrony安装包centos_Jenkins_09

 

 

再次构建便正常了