jenkins结合httprunner配置实现自动化测试
jenkins结合httprunner配置实现自动化测试
自动化测试思路:
jenkins发布代码到预发布环境 –> 触发自动化测试预发布环境 à 返回测试结:如果测试通过则将代码推送到生产环境目录,测试没有通过则不发布代码到生产环境,同时发送邮件和测试报告
整体步骤:
1.创建一个job :MG.backend.chinasoft.me
使用jenkins配合git和rsync发布代码到预发布环境中,预发布环境和生产环境越接近越好
我们本次发布是使用同一台服务器 nginx 使用不同域名代理不同目录的方式来区分灰度和生产环境
生产环境目录:/data/www/vhosts/chinasoft.me
灰度目录:/data/www/vhosts/chinasoft.me.uat
生产的域名:https://api.chinasoft.me
灰度域名:https://api-uat.chinasoft.me
2.创建另外一个自动化测试的job,该job执行的时机是在 MG.backend.chinasoft.me
执行后触发
jenkins创建灰度发布job
配置git拉取代码
Build执行的脚本
Shell脚本:
echo $WORKSPACE
git show
##定义变量
dir_name=bak.$(date +%Y-%m-%d)
project_dir=/data/www/vhosts/chinasoft.me/httpdocs
##备份代码
cp -a /data/www/vhosts/chinasoft.me/ /data/www/vhosts/chinasoft.me_$dir_name
sleep 1
##同步最新代码到待发布目录
rsync -vau -progress --delete --exclude='.git/' --exclude='env.php' --exclude='.gitignore/' --exclude='runtime/' $WORKSPACE/ /data/www/vhosts/chinasoft.me/httpdocs/
##发布到海外
echo "code rsync....start!"
chown -R apache.users $project_dir
sleep 2
/bin/bash /usr/local/worksh/jeninks_task/api_backend.chinasoft_me_uat.sh
相关的脚本:
[root@jenkins:/usr/local/worksh/jeninks_task]# more api_backend.chinasoft_me_uat.sh
#!/bin/bash
#############################################
# 通过jenkins发布任务 MG.cart.xcloudlab.com 发布 /data/www/vhosts/cart.xcloudlab.com 目录到1.1.1.1 和 1.1.1.2这两台服务器中
# uat和pro获取代码源头都是一个相同目录: /data/www/vhosts/chinasoft.me/httpdocs/
chinasoft_iplist="1.1.1.1"
function chinasoft_eus_rsync()
{
for ip in $chinasoft_iplist
do
echo "-- start pub --- 预发布到外网 ${ip} ----------------------------------------"
/usr/local/bin/rsync -vazP --bwlimit=1000 --exclude='.git/' --exclude='env.php' --exclude='.gitignore/' --exclude='runtime/' --exclude='docs/' --password-file=/data/www/.rsync/rsyncd.pass /data/www/vhosts/chinasoft.me/httpdocs/ apache@$ip::apache/data/www/vhosts/chinasoft.me.uat/httpdocs/
echo -e "-- end pub ${ip} ----------------------------------------------------------\n\n"
done
}
# 执行同步
chinasoft_eus_rsync
[root@jenkins:/usr/local/worksh/jeninks_task]# more api_backend.chinasoft_me_pro.sh
#!/bin/bash
#############################################
# 通过jenkins发布任务 MG.cart.xcloudlab.com 发布 /data/www/vhosts/cart.xcloudlab.com 目录到1.1.1.1和1.1.1.2这两台服务器中
chinasoft_iplist="1.1.1.1"
function chinasoft_eus_rsync()
{
for ip in $chinasoft_iplist
do
echo "-- start pub --- 预发布到外网 ${ip} ----------------------------------------"
/usr/local/bin/rsync -vazP --bwlimit=1000 --exclude='.git/' --exclude='env.php' --exclude='.gitignore/' --exclude='runtime/' --exclude='docs/' --password-file=/data/www/.rsync/rsyncd.pass /data/www/vhosts/chinasoft.me/httpdocs/ apache@$ip::apache/data/www/vhosts/chinasoft.me/httpdocs/
echo -e "-- end pub ${ip} ----------------------------------------------------------\n\n"
done
}
# 执行同步
chinasoft_eus_rsync
触发邮件
至此灰度发布创建完成
创建jenkins的自动化测试关联job
即在上面的灰度发布执行后触发
给个名字
配置拉取自动化测试框架脚本的git
配置触发的时机
执行自动化测试脚本:
自动化测试脚本代码:
#!/bin/bash
cd Chinasoft
rm -rf reports
cp /usr/local/worksh/jeninks_task/chinasoft_auto_test/.env .
/usr/local/python3/bin/hrun testsuites/TM_Normal.yml --log-file result.log
cat result.log|grep ERROR
result=`echo $?`
rm result.log
mv reports/*.html reports/report.html
if [ $result == 0 ]; then
exit 1
else
# 自动化测试通过执行发布生产代码
/bin/bash /usr/local/worksh/jeninks_task/api_backend.chinasoft_me_pro.sh
exit 0
fi
环境脚本.env内容
[root@jenkins:/usr/local/worksh/jeninks_task]# more chinasoft_auto_test/.env
app_key=G49D94FCV9SE6O64
app_fp=0GOM886LNLT7R5O3JP
Content_Type=application/x-www-form-urlencoded
client_id=FC99DF9D9CFFD8DACE8AC2BA2D7EB5C7
client_from=1
lang=en
user_url=https://user-api.chinasoft.me
transfer_url=https://transfer-api.chinasoft.me
TEST_ENV=PRODUCTION
Username=testonline01@ws.cn
Password=qweasd
vipUsername=dengbz@wondershare.cn
vipPassword=qweasd
当测试完成后发送邮件,并以html的格式附件发送测试报告
邮件发送模板:
本邮件由系统自动发出,请勿回复!<br/>
<h2><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></h2>
<h4><font color="#0B610B">构建信息</font></h4>
<hr size="2" width="100%" />
<ul>
<li>项目名称:${PROJECT_NAME} - #${BUILD_NUMBER}</li>
<li>触发原因:${CAUSE}</li>
<li>项目 URL:<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
<li>构建 URL:<a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>构建日志:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>工作目录:<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
</ul>
<h4><font color="#0B610B">测试报告</font></h4>
<hr size="2" width="100%" />
<ul>
<li>详细测试报告和构建日志:请看附件</li>
</ul>
测试脚本执行的环境部署(在jenkins服务器中,要求jenkins服务器和目标的灰度环境是连通的):
一、安装python3.6
1. 安装依赖环境
# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
2.下载Python3
# wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
3.安装python3
创建目录:
# mkdir -p /usr/local/python3
解压下载好的Python-3.x.x.tgz包
# tar -zxvf Python-3.6.1.tgz
4.进入解压后的目录,编译安装。
# cd Python-3.6.1
# ./configure --prefix=/usr/local/python3
# make && make install
5.建立python3的软链
# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
6.并将/usr/local/python3/bin加入PATH
vim ~/.bash_profile
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/python3/bin
export PATH
修改完记得执行行下面的命令,让上一步的修改生效:
# source ~/.bash_profile
# 安装自动化测试框架
# pip3 install httprunner
# 看是否安装成功
[root@jenkins:~]# httprunner -V
2.2.4
jenkins结合httprunner配置实现自动化测试的更多相关文章
- 基于HttpRunner的接口自动化测试平台HttpRunnerManager(二)
https://github.com/HttpRunner/HttpRunnerManager HttpRunnerManager Design Philosophy 基于HttpRunner的接口自 ...
- 集成 Jenkins 和 TestNG 实现自助式自动化测试平台
背景介绍 在软件业十分成熟的今天,敏捷(Agile)开发在业界日益流行,而面临的挑战也日益增多,不断变化的用户需求.缩短的开发周期.频繁的部署上线.复杂的产品架构和团队组织,如何继续保证软件的质量是一 ...
- pytest测试框架+jenkins结合pytest+jenkins邮件通知配置
刚刚做完一个项目,由于这是一个方案项目,而不是产品,所以各种准备很不充分,很多公司的能力不能复用,整个团队又都是新员工,而且有部分实习生,匆忙上马,今天对我的自动化框架做一个回溯 自动化测试框架的选择 ...
- Jenkins入门系列之——02第二章 Jenkins安装与配置
2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...
- jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限
jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限 由于初次接触jenkins,于是在搭建好jenkins以后,想要对用户进行管理,于是乎开始在系统管理->conf ...
- Raspberry树莓派学习笔记2—配置RobotFramework自动化测试环境
一般RobotFramework都是安装在Windows/Linux的PC机上,这里将简单介绍在树莓派硬件平台上配置RobotFramework的开发和运行环境. 树莓派上配置了自动化测试软件,可以考 ...
- Jenkins的安装配置
Jenkins的安装配置 一.Jenkins简介 Jenkins 是一个可扩展的持续集成引擎.Jenkins可以帮我们将代码进行统一的编译打包.还可以放到tomcat容器中进行发布.简单来说就是我们通 ...
- Jenkins安装与配置
Jenkins安装与配置 2 Jenkins安装 在最简单的情况下,Jenkins 只需要两个步骤: 1.下载最新的版本(一个 WAR 文件).Jenkins官方网址: http://Jenkins- ...
- Jenkins的安装配置和使用
Jenkins的安装配置和使用 1 Jenkins介绍 w3cschool中这样介绍:Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个 ...
随机推荐
- 过采样中用到的SMOTE算法
平时很多分类问题都会面对样本不均衡的问题,很多算法在这种情况下分类效果都不够理想.类不平衡(class-imbalance)是指在训练分类器中所使用的训练集的类别分布不均.比如说一个二分类问题,100 ...
- 下载nvidia-docker2的rpm包
现在慢慢进入GPU的世界, 参考安装URL: https://github.com/NVIDIA/nvidia-docker # If you have nvidia-docker 1.0 insta ...
- SHOI2008 cactus仙人掌图 和 UOJ87 mx的仙人掌
cactus仙人掌图 题目描述 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人掌图(cactus).所谓简单回路就是指在图上不重复经过任何一 ...
- Visual Studio 2017 许可证已过期解决方案
1.卸载并重安VS2017 2.安装后打开VS2017,点击帮助=>注册产品,输入序列号NJVYC-BMHX2-G77MM-4XJMR-6Q8QF(企业版), KBJFW-NXHK6-W4WJM ...
- java web 向数据库插入中文数据乱码问题
一.先检查下是 页面返回数据时已经乱码了,还是在插入数据库的时候乱的码. 二.页面返回乱码: 1. Web.XML 文件配置 <!-- 配置编码过滤器 --> <filter&g ...
- js数值的添加与删除
js中数组元素的添加和删除 js中数组元素常用添加方法是直接添加.push方法以及unshift方法 删除方法则是delete.pop.shift 集修改方法为一身的则是splice 1.添加: (1 ...
- 【转】根据Quartz-Cron表达式获取最近几次执行时间
public static List<String> getRecentTriggerTime(String cron) { List<String> list = new A ...
- 计数器的原理,设计及verilog实现
若计数器由n个触发器组成,则计数器的位数为n,所能计数的最大模数为2的n次幂.以下为同步二进制加法计数器电路; 驱动方程:状态图 状态方程(此时的Q0,Q1为上一次状态值): 下例是同步4位2进制计数 ...
- DevOps-如何构建持续交付流水线
引言 DevOps 是一套实践方法,在保证高质量的前提下缩短系统变更从提交到部署至生产环境的时间,其中持续集成和持续交付是 DevOps 里面非常重要的一环.本文讲述了达到自动化持续交付需要做的准备工 ...
- luogu_P3313 [SDOI2014]旅行
传送门 Solution 第二次学习可持久化线段树 打了一道裸题来练习一下-- 对于每个宗教都可以开一个主席树 基础操作 树剖lca Code #include<bits/stdc++.h&g ...