简介本文将介绍如何从0到1搭建Python项目集成测试环境,并详细提及部署过程中遇到的各种问题。Pytest负责Python代码测试Allure负责测试报告HTML界面展示Jenkins负责自动部署环境为MacOS,在Windows或Linux下都可以类似方式部署运行,也会给出相应的参考链接.文中首先需要安装Jenkins,而Jenkins依赖JDK,所以需要先安装JavaJDK,这部分不再赘述,然后再安装Jenkins,在MacOS中可以通过HomeBrew安装。brewinstalljenkins如果你的brewinstall很慢,可以参考文末提示[1]。当然也可以直接通过Docker安装。Jenkins在DockerHub中提供了官方资源。dockerrun-p8080:8080-p50000:50000-v/your/home:/var/jenkins_homejenkins我是用brew安装的,安装完成后使用如下命令运行jenkins$jenkins此时jenkins会显式运行在命令行终端上,创建~/.jenkins目录作为JENKINS_HOME,并将localhost:8080作为默认URL。启动时,Jenkins会给出初始密码,该密码在JENKINS_HOME的secrets/initialAdminPassword中。登录后,Jenkins会要求你安装一些插件。这时候第一个坑就出现了,安装插件的速度极慢。可以参考技巧[2]来解决这个问题。通过技能[2]修改配置后,可以使用技能[3]]重启JenkinsJenkins安装有几个关键点。1.安装前了解自己安装的Jenkins是什么版本,因为Jenkins中的allure插件对Jenkins有版本要求2.了解JENKINS_HOME所在位置allure是一个支持多种编程语言的可视化测试报告工具,allure在jenkins中的插件可以让jenkins方便的调用allure(有坑),pytest中的allure插件主要是让pytest生成满足allure要求的测试信息文件。通过allure插件,将jenkins、pytest、allure链接在一起。pytest负责测试。测试生成的报告可以通过allure生成图形界面,jenkins将这两个过程自动化。在MacOS上,allure也是通过Homebrew安装的。brewinstallallureWindows和Linux上Allure的安装方法参考:https://github.com/allure-fra...allure安装好后,先安装allure的pytest插件,顺便安装pytest。pipinstallpytest==5.3.5pipinstallallure-pytest==2.8.9pipinstallallure-python-commons==2.8.9安装好后可以先使用。找一个使用pytest的项目,直接去github拉取requests库。它的测试目录充满了通过pytest构建的测试用例。通过pytest运行requests/tests中的代码,通过--alluredir指定生成数据的文件夹。这些数据是allure可以读取的数据,一般是一堆JSON文件。pytestrequests/tests--alluredir=./allure-results获取JSON文件数据后,可以使用alluregenerate命令生成HTML测试报告界面。alluregenerateallure-results-oallure-report--clean通过上面的命令,allure会生成测试报告到allure-report目录下,至此整个过程已经进行了一半。接下来,在Jenkins中安装Allure插件。进入Jenkins的插件管理界面,安装“AllureJenkinsPlugin”。另外,为了更好的展示HTML测试报告,继续安装“HTMLPublisherPlugin”。“AllureJenkinsPlugin”安装完成后,需要进行配置,进入“系统设置”->“全局工具配置”。进行如下配置,FromMavenCentral选择最新版本2.13.1。配置完成后重启Jenkins,让Jenkins加载最新安装的插件。Jenkins插件安装完成后,在Jenkins中创建一个Freestyle项目。您可以根据需要填写描述。在构建部分中,选择执行Shell。如果您是Windows,请选择执行Windows批处理命令。因为我是在MacOS下执行,所以选择ExecuteShell,输入如下Shell代码#!/bin/bashcd/Users/ayuliao/Desktop/workspace/CICDsourcevenv/bin/activatepytestrequests/tests--alluredir"${WORKSPACE}/target/allure-results》exit0cd进入对应目录,然后通过source激活对应的Python虚拟环境。我只是在这个虚拟环境下安装了pytest库,然后就可以正常使用pytest了。这个时候我还是使用pytest来运行requests/tests中的测试代码,但是--alluredir设置的路径很讲究。简单的说,--alluredir必须是“${WORKSPACE}/target/allure-results”,因为Jenkins通过插件调用alluregenera命令时,传入的路径固定为${WORKSPACE}/target/allure-结果。${WORKSPACE}是Jenkins的内置变量,意思是“指定构建为工作空间的目录的绝对路径”。如果--alluredir为其他值,通过Jenkins构建项目时会抛出allure-resultsdoesnotexist。您可以在“https://github.com/jenkinsci/...”中查看问题的详细信息。另外,构建后还需要配置Post-buildActions,这里也很关键。选择“AllureReport”,将Results和ReportPath分别配置为target/allure-results和target/allure-report。这是固定的。不要看评论说可以随意配置。上述配置之所以固定,取决于JenkinsJob中的控制台输出。jenkins调用alluregenerate命令已修复。$/Users/ayuliao/.jenkins/tools/ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation/allure/bin/alluregenerate"/Users/ayuliao/.jenkins/workspace/alluresreport/target/allure-results"-c-o"/Users/ayuliao/.jenkins/workspace/alluresreport/target/allure-report"如果将Results和ReportPath配置为其他值,会出现各种问题。就是这样。Tips[1]Homebrew加速下载软件:https://mirror.tuna.tsinghua....https://shockerli.net/post/ho...[2]Jenkins插件安装提速:https://www.cnblogs.com/hellx...[3]通过网址操作Jenkins:https://www.cnblogs.com/dzblo...
