自动化的持续集成

2021-04-23 11:16:12 浏览数 (1)

今天在家宅了一天,总算把自动化这块搞得很清楚了。 自己用uiautomator2和pytest写了一个mobile的自动化框架。跑起来很顺手很丝滑。 报告是用allure展示的,但是allure一个缺点是本地打不开。 我将其集成到jenkins上。 本来很顺利的,但是报表不展示,一直显示空,我也去看了log,也尝试用了各种办法来解决,但是不理想。正当我要放弃的时候,灵光一闪,解决了。 看看我跑过的job, 你就知道很多事情,在一点小的地方,能坑你很久,如果不坚持,就看不到曙光。

安装allure.

这个简单,去官网下载一个包,解压,设置环境变量就可以了。 解压缩,定位到bin目录下 将该路径添加到环境变量PATH

安装pytest-allure插件,运行:pip install allure-pytest

使用

代码语言:javascript复制
运行测试用例:pytest --alluredir=/tmp/my_allure_results
直接打开测试报告:allure serve /tmp/my_allure_results 将会在默认浏览器中打开测试报告

或者生成测试报告:allure generate /tmp/my_allure_results -o /tmp/report --clean
打开测试报告:allure open -h 127.0.0.1 -p 8083 /tmp/report
安装jenkins.

这个也简单,去官网下载一个war包。用java -jar,扔进去就可以了。 一个小插曲,我忘记密码了。 忘记密码,有两个处理方式 。

方式一:重置密码

代码语言:javascript复制
修改 JENKINS_HOME/users/usernamedir 目录下的config.xml  文件

注:usernamedir 就是你忘记密码对应的用户文件夹
如果是java -jar方式启动的,HOME目录位于/root/.jenkins

修改config.xml,找到 passwordHash部分,替换原有的hash值

  把
  #jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS
  修改为
  #jbcrypt:$2a$10$4NW.9hNVyltZlHzrNOOjlOgfGrGUkZEpBfhkaUrb7ODQKBVmKRcmK
  后者是123456的hash值

重启Jenkins 
/etc/init.d/jenkins restart

用最新的密码 111111 登录

方式二:取消密码

代码语言:javascript复制
进入Jenkins主目录,备份config.xml
cp config.xml config.xml.bak

修改config.xml文件 
找到关键词 useSecurity ,把后面的值 true 改为false


重启 Jenkins 
/etc/init.d/jenkins restart

可以无账号和密码登录Jenkins

我用的是方法二,简单粗暴。

装插件

1.打开Jenkins,首页点击[Manage Jenkins]

2.选择[Manage Plugins] 去插件里搜allue,安装后重启就可以了。

Allure Commandline配置

1.jenkins配置页,选择全局工具配置[Global Tool Configuration]

2. 全局配置页下拉到最后一项,你会看到“Allure Commandline”项, 命名之后保存即可

新建job

Jenkins首页点击新建Job[New Item] 最开始我是这么配置的(错误示范)

构建后展示报告是这样配置(错误示范)

结果是报表里面一直是空,看log,一直出这句话:allure-results does not exists 看网上的教程,也没法解决。 最后想到了,jenkins的项目路径,跟实际项目的路径是有出入的。

于是这样配置了一下:

构建后配置:

将advance打开,report那块也要配置:

运行一下,就成功了。报表展开是这样的,我这里特意弄了一个失败截图的例子:

其实开始一直在项目的路径徘徊。就没有想过是job的名字,要加job的路径,文件是在job的workspace里保存的。 其实它已经举例子了,但是那个tagert不是很明确。 网上一搜,好多遇到这个问题的,还好我幸运地解决了。坑了我一个星期六的时间。

0 人点赞