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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM