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配置实现自动化测试的更多相关文章

  1. 基于HttpRunner的接口自动化测试平台HttpRunnerManager(二)

    https://github.com/HttpRunner/HttpRunnerManager HttpRunnerManager Design Philosophy 基于HttpRunner的接口自 ...

  2. 集成 Jenkins 和 TestNG 实现自助式自动化测试平台

    背景介绍 在软件业十分成熟的今天,敏捷(Agile)开发在业界日益流行,而面临的挑战也日益增多,不断变化的用户需求.缩短的开发周期.频繁的部署上线.复杂的产品架构和团队组织,如何继续保证软件的质量是一 ...

  3. pytest测试框架+jenkins结合pytest+jenkins邮件通知配置

    刚刚做完一个项目,由于这是一个方案项目,而不是产品,所以各种准备很不充分,很多公司的能力不能复用,整个团队又都是新员工,而且有部分实习生,匆忙上马,今天对我的自动化框架做一个回溯 自动化测试框架的选择 ...

  4. Jenkins入门系列之——02第二章 Jenkins安装与配置

    2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...

  5. jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限

    jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限 由于初次接触jenkins,于是在搭建好jenkins以后,想要对用户进行管理,于是乎开始在系统管理->conf ...

  6. Raspberry树莓派学习笔记2—配置RobotFramework自动化测试环境

    一般RobotFramework都是安装在Windows/Linux的PC机上,这里将简单介绍在树莓派硬件平台上配置RobotFramework的开发和运行环境. 树莓派上配置了自动化测试软件,可以考 ...

  7. Jenkins的安装配置

    Jenkins的安装配置 一.Jenkins简介 Jenkins 是一个可扩展的持续集成引擎.Jenkins可以帮我们将代码进行统一的编译打包.还可以放到tomcat容器中进行发布.简单来说就是我们通 ...

  8. Jenkins安装与配置

    Jenkins安装与配置 2 Jenkins安装 在最简单的情况下,Jenkins 只需要两个步骤: 1.下载最新的版本(一个 WAR 文件).Jenkins官方网址: http://Jenkins- ...

  9. Jenkins的安装配置和使用

    Jenkins的安装配置和使用 1 Jenkins介绍 w3cschool中这样介绍:Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个 ...

随机推荐

  1. Bicoloring (并查集/二分图)

    题目链接 题意: m个查询,每个查询输入a b,表示 顶点a b之间涂色. 规定只能涂颜色0 或者颜色 1,一个节点相连的边 必须涂成相同的颜色. 问 ,输入m组 a b之后,会不会犯规. 思路: 判 ...

  2. Java内存模型中volatile关键字的作用

    volatile作用总结: 1. 强制线程从公共内存中取得变量的值,而不是从线程的私有的本地内存中,volatile修饰的变量不具有原子性(修改一个变量的值不能同步). 2. 保证volatile修饰 ...

  3. Java volatile关键字实现原理

    场景引入 可见性问题 先来看一张图: 上面的图,是简化版的Java内存模型,一个线程有自己的工作内存,同时还有一个共享的主内存. 线程1和线程2读取数据data时,先从主内存里加载data变量的值到工 ...

  4. Django之路——8 cookie 和sessions

    会话跟踪技术 1 什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10 ...

  5. webpack loader和插件的编写原理

    webpack自定义loader和插件的api网址:https://www.webpackjs.com/api/loaders/ 点击顶部API,看左侧api: 1. 如何编写一个loader 实现的 ...

  6. EF映射——从数据库更新实体

    最近在做ITOO项目,由于更新了数据库,需要重新从数据库映射到实体,本来看过关于EF的学习资料,直接可以从数据库更新到实体,但这种小事也是有很多问题的,必须在更新的时候做好选择.下面分享一下如何从数据 ...

  7. 忘记 MySQL 的 root 帐号密码该怎么办

    如果你忘了 MySQL 的 root 帐号密码,别担心,使用下面步骤就可以重设一个新密码: 首先停止 MySQL 服务 “/etc/init.d/mysql stop” 启动 MySQL 服务并屏蔽用 ...

  8. 【Python】编程小白的第一本python(基础中的基础)

    一.变量 如果不知道变量是什么类型,可以通过type()函数来查看类型,在IDE中输入: print(type(word)) 另外,由于中文注释会导致报错,所以需要在文件开头加一行魔法注释 #codi ...

  9. TortoiseGit-下载安装汉语语言包(汉化-方法)

    TortoiseGit是一款版本控制软件,和git bash是差不多的, 但是TortoiseGit是图形界面,git bash却是命令界面,但是, 我更新了TortoiseGit后,记得明明选择了汉 ...

  10. windows nginx 目录配置

    http { server { listen 80; server_name www.test.com; location / { root E:/data/www; index index.html ...