自动化测试的运行方式:
代码是在远程仓库当中(不在你那)
不一定是在个人电脑上运行自动化,比如服务器linux,不一定有pycharm(pycharm只是我们在本地编写代码的一个工具)
命令行去运行:python run.py在运行之前,通过pip install -r requirements.txt,安装所有的第三方库
在服务器运行自动化测试代码方式:
持续集成指的是,频繁地(一天多次)将代码集成到主干
主干指的是产品发布前产品的最终形态,它还会包含很多分支,包括设计、开发、测试等等。这些工作分给了不同的部门,不同的人。在产品上线前,需要把这些分支都整合到主干,就是集成
对于测试而言,需要频繁的运行自动化测试的代码。包括定时运行,根据开发提交的代码运行等等
持续集成让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成
Jenkins是一个持续集成的工具。各个分支把他们的代码放到jenkins上进行集中管理,相互之前可以形成各种流程作业
没有jenkins时,测试会先去问下开发,你们的代码更新了吗?我现在可以正常访问之前的接口吗?如果开发已经完成代码更新,测试就可以运行自动化测试代码了。如果开发没有完成,那就需要过段时间再去确认一次
这样存在两个问题
问题一:开发和测试之间的协作成本很高,需要频繁的询问和沟通进度
问题二:测试运行自动化测试脚本的时间不固定,什么时候测是不确定的,不利于推动流程的规范
有了jenkins以后,当开发往GitHub等版本控制系统里提交代码以后,会自动触发jenkins上开发代码的提交钩子,开发代码自动完成构建
开发代码一旦完成构建,又会触发测试代码的自动构建,不需要人工参与
jenkins安装方式有两种(通用方式):
直接去Jenkins官方下载
下载完成后,通过java命令运行来运行下载的war包(这种方法运行前,需要先安装了java的jdk)
然后找到jenkins.war的文件位置,然后进入cmd
命令窗口中,输入java -jar jenkins.war --httpPort=9001 ,回车
看到Jenkins is fully up and running这行信息后才可以
这样我们就可以访问了,访问地址:http://localhost:9001/
注意访问前一定要开启服务,也就是上一步的命令java -jar jenkins.war --httpPort=9001
然后复制页面显示的路径C:\Users\lijiao\.jenkins\secrets\initialAdminPassword,找到后以.txt文件打开,复制到密码内
点击【安装推荐的插件】,会跳转到下面的页面,这种方式可能会慢,主动看网络环境,【选择插件来安装】,里面可以选择需要安装的插件,我选择的是安装推荐的插件
配置不需要管,直接点击保存并完成即可
点击开始使用就可以进入使用页面了
下面是登录页面
我们看一下如果安装插件,使用国内的地址https://updates.jenkins.io/update-center.json来进行安装,因为国外的偶尔会安装出问题
选择Manage Jenkins-->Manage Plugins-->搜索需要的插件-->点击Install without restart
点击新建Item-->输入任务名称,选择Freestyle project,点击【确定】
返回列表就可以看到刚刚新建的任务名称
任务中重要的一个是Build Now,点击Build Now就创建一个构建
点击构建,选择控制台输出,就可以看出输出的内容,因为这是新建的没有东西所以运行是成功的
我们也可以在目录下看到创建任务后生成的文件夹C:\Users\lijiao\.jenkins\workspace,因为没有内容所以文件夹是空的
点击配置,进入配置页
输入 URL(就是gitee/gitlab/github存代码的地址),然后添加用户名和密码,然后选择添加后的用户名和密码,点击保存按钮(注意如果你的没有Git选项,说明没有安装Git插件)
构建环境,勾选Add timestamps to the Console Output
构建选择Execute Windows batch command
然后输入pip install -r requirements.txt 和 python run.py命令
保存成功后,再点击Build Now,选择新构建的控制台输出
因为新写的代码没有上传上gitee上,所以需要先进行提交代码,在pycharm中提交,提交前记录执行git add . 和 git commit -m "版本信息"
代码上传完成后,再次进行构建查看控制台,可以看到都已经安装成功,已经安装过不会再安装
此处我来模拟一下开发去触发项目
设置构建触发器,关注对应的项目
当开发的项目触发后,我们的项目会自动执行
配置定时构建时间:
符号表示:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作
逗号(,):可以用逗号隔开的值指定一个列表范围,例如"1,2,5,6,7"
中杠(-):可以用整数之间的中杠表示一个整数范围,例如"2-6"表示"2,3,4,5,6"
正斜线(/):可以用正斜线指定时间的间隔频率,例如"0-23/2"表示每小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次
实例:
实例1:第1分钟执行一次myCommand
* * * * * myCommand
实例2:第小时的第3和15分钟执行myCommand
3,15 * * * * myCommand
实例3:在上午8点到11点的第3和15分钟执行myCommand
3,15 8-11 * * * myCommand
实例4:每隔两天的上午8点到11点的第3和15分钟执行myCommand
3,15 8-11 */2 * * myCommand
实例5:每周一上午8点到11点的第3和15分钟执行myCommand
3,15 8-11 * * 1 myCommand
实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4:45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1:10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18:00至23:00之间每隔30分钟重启smb
*/30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11:00pm重启smb
* 23 * * 6 /etc/init.d/smb restart
实例11:第一小时重启smb
* */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb
* 23-7 * * * /etc/init.d/smb restart
使用前可以先确认一下是否安装了此插件,没有的话需要先安装,我这里是已经安装好的,安装就是从【可选插件】搜索到后点击安装
点击【增加构建后操作步骤】按钮 --> 选择Publish HTML reports --> 设置
【HTML directory to archive】和【Index page[s]】--> 点击【保存】按钮
保存设置后,再去点击【Build Now】,然后刷新一下页面就可以看到【HTML Report】
点击【HTML Report】即可查看HTML报告
但是我们看到显示不太美观,因为交互时,外部的一些文件jenkins自动屏蔽了,丢失了前端的样式,所以我们想美观要设置一下csp
我们发现HTML报告中的样式丢失了,原因是jenkins中的CSP(Content Security Policy,内容安全策略)的默认配置为一个非常严格的权限集,以防止Jenkins用户受到恶意的HTML/JS文件的攻击
点击【Manage Jenkins】--> 【Script Console】 --> 把这行代码【System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")】复制到命令行中
-->点击【运行】按钮
然后再去构建的HTML报告就会正常显示,配置命令行之前的报告不会变
点击【Manage Jenkins】--> 【Manage Plugins】-->
搜索email,选择【Email Extension Template】--> 点击安装
管理员也就是发件人的邮箱,设置的时候一定要注意有两个地方都需要设置,如果只设置了一个,就会发件人收到邮件,收件人收不到邮件(因为收件不成功,邮件被退回了)
点击【Manage Jenkins】--> 【System Configuration】
第一个设置的位置
找到【Jenkins Location】,填写系统管理员邮件地址,注意这是填写的是发件人的邮箱
找到【Extended E-mail Notification】,填写SMTP server、SMTP Port、SMTP Username、SMTP Password,分别填写即可保存,注意的是,如果没看到SMTP Username和SMTP Password,点击高级按钮即可
SMTP server:邮箱服务地址,这个百度搜索一下即可,不同邮箱是不同的
SMTP Port:端口号,百度即可
SMTP Username:用户名,就是QQ的登录邮箱
SMTP Password:密码,不是登录QQ邮箱的密码,而是邮箱生成授权码后的那个密码,这个百度就知道如何去设置了
第二个设置的位置
找到【邮件通知】,填写系统管理员邮件地址,注意这是填写的是发件人的邮箱,账号跟密码看不到点击【高级】按钮,密码跟第一个设置的密码是一样的,也就是授权码
收件人配置也有两个位置可以设置,设置其中一个位置即可
第一种方法:
点击【Manage Jenkins】--> 【Manage Plugins】-->一直向下找到【Default Recipients】输入收件人邮箱即可
第二种方法:
选择要设置的任务 --> 点击【配置】--> 点击【增加构建后操作步骤】按钮 --> 选择Editable Email Notification --> 找到【Project Recipient List】输入收件人邮箱,多个收件人,之间用逗号隔开 --> 点击【保存】按钮
前面一步设置完成后,还有一步操作,否则收件人还是收不到邮件
点击【Advanced Settings】--> 【Add Trigger 】选择Always --> 点击【高级】按钮 --> 在【Recipient List 】输入收件人邮件,多个收件人,之间用逗号隔开
点击【Manage Jenkins】--> 【System Configuration】--> 找到【Default Content Type】选择HTML选项,找到【Default Content】,输入HTML格式代码 --> 点击【保存】按钮
查看邮件结果如下图