linux+jenkins+pytest+allure集成搭建
一、安装JDK1.8(此步可以参考度娘,比较容易)
一、安装python(此步可以参考度娘,比较容易)
坑1:安装过程中由于服务器存在多个版本python,pip安装的包没有安装到对应版本的python目录,导致python脚本无法执行
解决方案:方法1、卸载其他python版本,再重装,不过卸载不干净也有可能有问题
方法 2、修改pip安装目录
编辑 /usr/python/lib/python3.8/site.py文件(user_site就是对应的/usr/python/lib/python3.8/site-packages,user_base我还不太懂,我是设置成/usr/python/lib/python3.8)
方法3、命令中指定安装目标:pip install numpy --target=/usr/local/lib/python2.7/site-packages
坑2、linux多用户,明明已经把python环境变量配在了/etc/profile,但是echo $PATH时就是没有python的环境变量,导致无法执行Python命令
解决方案:1.1、修改用户名下的.bashrc(vim /home/用户名/.bashrc),把变量直接导入,如下:
export PATH=$PATH:/usr/python/bin
export PATH=$PATH:/data/software/allure-2.17.2/bin
1.2、修改完,使用source /home/wos/.bashrc使用修改生效
二、安装jenkins(此步可以参考度娘,比较容易)
三、安装allure
3.1、下载allure:https://github.com/allure-framework/allure2/releases
3.2、解压
3.3、配置环境变量
将解压后allure下bin目录的路径/XXX/bin配置进环境变量
vi /etc/profile
# 在PATH后追加以下内容,保存
:$PATH:/XXX/bin
# 使环境变量生效
source /etc/profile
3.4、验证
在命令行输入allure --version,能出现版本说明allure命令行已经安装成功了
四、Jenkins插件Allure
4.1、安装Allure Jenkins Plugin
4.2、配置Allure Jenkins Plugin
4.2.1、进入「系统设置」->「Global Tool Configuration」
4.2.2、配置
4.3、安装HTML Publisher Plugin
4.4、重启jenkins
五、安装pytest的allure插件
5.1、pip install allure-pytest -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
5.2、代码需要的插件 pip install -r /XXX/requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
注:-i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com为中国镜像,如果公司网络无法下载,可以加上,或者加其他镜像。
六、jenkins建job
6.1、建一个自由风格的job
6.2、配置代码地址,摘取代码
6.3、配置执行代码
shell代码如下:
export PATH=$PATH:/usr/python/bin export PATH=$PATH:/data/software/allure-2.17.2/bin folder_test=$1 file_test=$2 class_test=$3 case_test=$4 thread_test=$5 cd /data/jiangyf/pytest_allure python3 main.py $folder_test $file_test $class_test $case_test $thread_test
注:我是把执行命令放到一个shell中,然后再执行这个shell,也可以把命令放在上图的的框内。
这里有个问题,在终端执行python3 main.py没有问题的,但是在jenkins执行会报python3: command not found,由于没有找到解决方法,所以直接变量写到脚本中。
main.py代码如下:
import os import pytest import sys if __name__ == '__main__': folder_test = sys.argv[1] file_test = sys.argv[2] class_test = sys.argv[3] case_test = sys.argv[4] thread_test = sys.argv[5] if case_test == 'None': pytest.main(['--clean-alluredir', '-s', '-q', '--alluredir', './temp', folder_test+'/'+file_test, '-n=' + thread_test]) os.system('allure generate ./temp -o ./report --clean') else: pytest.main(['--clean-alluredir', '-s', '-q', '--alluredir', './temp', folder_test + '/' + file_test + '::' + class_test + '::' + case_test, '-n=' + thread_test]) os.system('allure generate ./temp -o ./report --clean')
6.4、配置allure
注:jenkins上配置的目录,默认是要工作目标下(即代码所有目录)