日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jmeter接口自动化部署jenkins教程

發布時間:2024/4/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jmeter接口自动化部署jenkins教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

?

首先,保證本地安裝并部署了jenkins,jmeter,xslproc

我搭建的自動化測試框架是jmeter+jenkins+xslproc

---注意:原理是,jmeter自生成的報告jtl文件,通過xslproc工具,再結合jmeter自帶的模板修改,自帶模板目錄如下,最終將測試結果報告轉化為html格式

1.jenkins新建一個任務,選擇“構建一個自由風格的軟件項目”,點擊OK

?

?2.選擇構建觸發器,根據時間點,每天到點進行自動觸發構建

3.輸入構建命令

(1)D:/soft/apache-jmeter-3.2/bin/jmeter -n -t D:/soft/apache-jmeter-3.2/jmx/接口測試.jmx?

這一句是通過cmd命令調用jmeter程序,執行jmeter的jmx自動化腳本;

(2)D:/soft/xsltproc/bin/xsltproc D:/soft/apache-jmeter-3.2/xsl/jmeter-results-detail-report_new.xsl %WORKSPACE%/test.jtl>%WORKSPACE%/test.html

這一句是調用xslproc程序,通過jmeter-results-detail-report_new.xsl模板,將jtl文件轉換為html報告文件;

4.

郵件的格式代碼如下:

大家好,本次接口測試構建結果如下: <hr/><!DOCTYPE html > <html> <head> <meta name="referrer" content="never"> <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日志</title> </head><body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"><table width="95%" cellpadding="0" cellspacing="0"style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"><tr><td>(本郵件是程序自動下發的,請勿回復!)</td></tr><tr><td><h2><font color="#0000FF">構建結果 - ${BUILD_STATUS}</font></h2></td></tr><tr><td><br /><b><font color="#0B610B">構建信息</font></b><hr size="2" width="100%" align="center" /></td></tr><tr><td><ul><li>項目名稱&nbsp;&nbsp;${PROJECT_NAME}</li><li>構建編號&nbsp;&nbsp;第${BUILD_NUMBER}次構建</li><li>觸發原因:&nbsp;${CAUSE}</li><li>構建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li><li>構建&nbsp;&nbsp;Url&nbsp;&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li><li>工作目錄&nbsp;&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li><li>項目&nbsp;&nbsp;Url&nbsp;&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li></ul></td></tr><tr><td><b><font color="#0B610B">Changes Since LastSuccessful Build:</font></b><hr size="2" width="100%" align="center" /></td></tr><tr><td><ul><li>歷史變更記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li></ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}</td></tr><tr><td><b>Failed Test Results</b><hr size="2" width="100%" align="center" /></td></tr><tr><td><prestyle="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre><br /></td></tr></table></body> </html> <b>${FILE,path="D:/jenkins/workspace/test/test.html"}</b>

以上是jenkins的所有設置

5.jenkins的版本太低的話,可能存在需要手動下載jenkins插件

?

?

最后,附上模板代碼給大家~

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><!--Licensed to the Apache Software Foundation (ASF) under one or morecontributor license agreements. See the NOTICE file distributed withthis work for additional information regarding copyright ownership.The ASF licenses this file to You under the Apache License, Version 2.0(the "License"); you may not use this file except in compliance withthe License. You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. --><!-- Stylesheet for processing 2.1 output format test result files To uses this directly in a browser, add the following to the JTL file as line 2:<?xml-stylesheet type="text/xsl" href="../extras/jmeter-results-detail-report_21.xsl"?>and you can then view the JTL in a browser --><xsl:output method="html" indent="yes" encoding="GB18030" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /><!-- Defined parameters (overrideable) <td bgcolor="#ff00ff"> --> <xsl:param name="showData" select="'y'"/> <xsl:param name="titleReport" select="'接口測試'"/><xsl:template match="testResults"><html ><head><title><xsl:value-of select="$titleReport" /></title><style type="text/css">body {font:normal 95% verdana,arial,helvetica;color:#000000;}table tr td, table tr th {font-size: 95%;}table.details tr th{word-wrap:break-word;color: #ffffff;font-weight: bold;text-align:center;background:#2674a6;}table.details tr td{width: 400px;word-wrap:break-word;background:#eeeee0;}table{table-layout:fixed ; }h1 {margin: 0px 0px 5px; font: 165% verdana,arial,helvetica}h2 {margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica}h3 {margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica}.Failure {font-weight:bold; color:red;}img{border-width: 0px;}.expand_link{position:absolute;right: 0px;width: 27px;top: 1px;height: 27px;}.page_details{display: none;}/* .page_details_expanded{display: block;displayhide this definition from IE5/6: table-row;} */</style><script language="JavaScript"><![CDATA[function expand(details_id){document.getElementById(details_id).className = "page_details_expanded";}function collapse(details_id){document.getElementById(details_id).className = "page_details";}function change(details_id){if(document.getElementById(details_id+"_image").src.match("expand")){document.getElementById(details_id+"_image").src = "collapse.png";expand(details_id);}else{document.getElementById(details_id+"_image").src = "expand.png";collapse(details_id);} }]]></script></head><body ><xsl:call-template name="pageHeader" /><xsl:call-template name="myresult" /> <xsl:call-template name="summary" /><hr size="1" width="75%" align="center" /><xsl:call-template name="pagelist" /><hr size="1" width="75%" align="center" /><xsl:call-template name="detail" /></body></html> </xsl:template><xsl:template name="pageHeader"><h1><xsl:value-of select="$titleReport" /></h1><table width="100%"><tr><td align="left">Date report:</td><td align="right">from 一卡通</td></tr></table><hr size="1" /> </xsl:template><xsl:template name="myresult"><xsl:variable name="allFailCount" select="count(/testResults/*[attribute::s='false'])" /><xsl:if test="$allFailCount = '0'"><h2>測試結果:成功</h2> </xsl:if> <xsl:if test="$allFailCount &gt; '0'"><h2 bgcolor="#ff00ff">測試結果:失敗</h2><h2 bgcolor="#ff00ff">失敗個數:<xsl:value-of select="count(/testResults/*[attribute::s='false'])"/></h2></xsl:if> </xsl:template><xsl:template name="summary"><h2>報告概況</h2><table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%"><tr valign="top"><th>用例總數</th><th>失敗數</th><th>成功率</th><th>平均響應時間</th></tr><tr valign="top"><xsl:variable name="allCount" select="count(/testResults/*)" /><xsl:variable name="allFailureCount" select="count(/testResults/*[attribute::s='false'])" /><xsl:variable name="allSuccessCount" select="count(/testResults/*[attribute::s='true'])" /><xsl:variable name="allSuccessPercent" select="$allSuccessCount div $allCount" /><xsl:variable name="allTotalTime" select="sum(/testResults/*/@t)" /><xsl:variable name="allAverageTime" select="$allTotalTime div $allCount" /><xsl:variable name="allMinTime"><xsl:call-template name="min"><xsl:with-param name="nodes" select="/testResults/*/@t" /></xsl:call-template></xsl:variable><xsl:variable name="allMaxTime"><xsl:call-template name="max"><xsl:with-param name="nodes" select="/testResults/*/@t" /></xsl:call-template></xsl:variable><xsl:attribute name="class"><xsl:choose><xsl:when test="$allFailureCount &gt; 0">Failure</xsl:when></xsl:choose></xsl:attribute><td align="center"><xsl:value-of select="$allCount" /></td><td align="center"><xsl:value-of select="$allFailureCount" /></td><td align="center"><xsl:call-template name="display-percent"><xsl:with-param name="value" select="$allSuccessPercent" /></xsl:call-template></td><td align="center"><xsl:call-template name="display-time"><xsl:with-param name="value" select="$allAverageTime" /></xsl:call-template></td></tr></table> </xsl:template><xsl:template name="pagelist"><h2>詳細情況</h2><table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%"><tr valign="top"><th width="50%">功能模塊</th><th>檢查次數</th><th>失敗數</th><th>成功率</th><th>平均響應時間</th></tr><xsl:for-each select="/testResults/*[not(@tn = preceding::*/@tn)]"><xsl:variable name="label" select="@tn" /><xsl:variable name="count" select="count(../*[@tn = current()/@tn])" /><xsl:variable name="failureCount" select="count(../*[@tn = current()/@tn][attribute::s='false'])" /><xsl:variable name="successCount" select="count(../*[@tn = current()/@tn][attribute::s='true'])" /><xsl:variable name="successPercent" select="$successCount div $count" /><xsl:variable name="totalTime" select="sum(../*[@tn = current()/@tn]/@t)" /><xsl:variable name="averageTime" select="$totalTime div $count" /><xsl:variable name="minTime"><xsl:call-template name="min"><xsl:with-param name="nodes" select="../*[@tn = current()/@tn]/@t" /></xsl:call-template></xsl:variable><xsl:variable name="maxTime"><xsl:call-template name="max"><xsl:with-param name="nodes" select="../*[@tn = current()/@tn]/@t" /></xsl:call-template></xsl:variable><tr valign="top"><xsl:attribute name="class"><xsl:choose><xsl:when test="$failureCount &gt; 0">Failure</xsl:when></xsl:choose></xsl:attribute><td><xsl:if test="$failureCount > 0"><a><xsl:attribute name="href">#<xsl:value-of select="$label" /></xsl:attribute><xsl:value-of select="$label" /></a></xsl:if><xsl:if test="0 >= $failureCount"><xsl:value-of select="$label" /></xsl:if></td><td align="center"><xsl:value-of select="$count" /></td><td align="center"><xsl:value-of select="$failureCount" /></td><td align="center"><xsl:call-template name="display-percent"><xsl:with-param name="value" select="$successPercent" /></xsl:call-template></td><td align="center"><xsl:call-template name="display-time"><xsl:with-param name="value" select="$averageTime" /></xsl:call-template></td></tr></xsl:for-each></table> </xsl:template><xsl:template name="detail"><xsl:variable name="allFailureCount" select="count(/testResults/*[attribute::s='false'])" /><xsl:if test="$allFailureCount > 0"><h2>Failure Detail</h2><xsl:for-each select="/testResults/*[not(@lb = preceding::*/@lb)]"> <xsl:variable name="failureCount" select="count(../*[@lb = current()/@lb][attribute::s='false'])" /> <xsl:if test="$failureCount > 0"><xsl:for-each select="/testResults/*[@lb = current()/@lb][attribute::s='false']"> <h3><xsl:value-of select="@tn" />---<xsl:value-of select="@lb" /><a><xsl:attribute name="name"><xsl:value-of select="@tn" /></xsl:attribute></a></h3><table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%"><tr valign="top"><th>http請求</th><th>失敗詳細信息</th><xsl:if test="$showData = 'y'"><th>響應數據</th></xsl:if></tr><tr><td><xsl:value-of select="java.net.URL" /> </td><td><xsl:value-of select="assertionResult/failureMessage" /></td><xsl:if test="$showData = 'y'"><td><xsl:value-of select="responseData" /></td></xsl:if></tr></table></xsl:for-each></xsl:if></xsl:for-each></xsl:if> </xsl:template><xsl:template name="min"><xsl:param name="nodes" select="/.." /><xsl:choose><xsl:when test="not($nodes)">NaN</xsl:when><xsl:otherwise><xsl:for-each select="$nodes"><xsl:sort data-type="number" /><xsl:if test="position() = 1"><xsl:value-of select="number(.)" /></xsl:if></xsl:for-each></xsl:otherwise></xsl:choose> </xsl:template><xsl:template name="max"><xsl:param name="nodes" select="/.." /><xsl:choose><xsl:when test="not($nodes)">NaN</xsl:when><xsl:otherwise><xsl:for-each select="$nodes"><xsl:sort data-type="number" order="descending" /><xsl:if test="position() = 1"><xsl:value-of select="number(.)" /></xsl:if></xsl:for-each></xsl:otherwise></xsl:choose> </xsl:template><xsl:template name="display-percent"><xsl:param name="value" /><xsl:value-of select="format-number($value,'0.00%')" /> </xsl:template><xsl:template name="display-time"><xsl:param name="value" /><xsl:value-of select="format-number($value,'0 ms')" /> </xsl:template></xsl:stylesheet>

模板的截圖如下:

?

轉載于:https://www.cnblogs.com/muzipaopao/p/10469494.html

總結

以上是生活随笔為你收集整理的jmeter接口自动化部署jenkins教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲激情自拍 | 久久密桃 | 久久久夜色 | 中文字幕在线观看的网站 | 国产黄色三级 | 日韩精品一区二区三区久久 | 办公室大战高跟丝袜秘书经理ol | 亚洲毛片在线播放 | 亚洲一区免费看 | 美女网站免费视频 | 国产v片在线观看 | 91九色porny视频 | 在线看三级 | 日本老师巨大bbw丰满 | 亚洲高清在线 | 国产成人高清视频 | 中文字幕免费在线播放 | 国产孕妇孕交大片孕 | 小镇姑娘高清播放视频 | www 在线观看视频 | 国产精选91 | 黄色高清视频在线观看 | 性做久久久久久久久 | 波多野结衣精品视频 | 成人av教育| 在线天堂6 | 亚州欧美日韩 | 久久久久夜夜夜精品国产 | 黄色在线观看免费 | 亚洲91av| 日本久色| 性v天堂 | 日韩精品在线播放 | 男生女生操操操 | www.久久成人 | 伊人色综合久久久 | 91麻豆精品一区二区三区 | 乱熟女高潮一区二区在线 | 不卡中文av | 久久精品无码一区二区三区免费 | av不卡一区二区三区 | 亚洲aa视频 | 天堂伊人网 | 伊人网伊人网 | 视频在线日韩 | 在线观看色网 | 在线中文天堂 | 国产国产乱老熟女视频网站97 | jizzjizz在线播放 | 好吊色视频一区二区 | 老头吃奶性行交 | 啊av在线 | 欧美aⅴ视频 | 深夜福利亚洲 | 中文字字幕一区二区三区四区五区 | 蜜桃av免费| 九一毛片 | 国产交换配乱淫视频免费 | 99热欧美| 80日本xxxxxxxxx96| 黑人操欧美人 | 在线播放少妇奶水过盛 | 美女黄色大片 | 国产在线拍揄自揄拍无码 | 在线免费观看日韩视频 | 欧美jizz欧美性大全 | 91播放在线| 夜夜爽天天干 | 综合九九 | 欧美性大交 | 欧美一区二区三区日韩 | 豆花视频成人 | 日韩在线一级 | www.在线视频 | 欧美xxxx网站| 深夜福利亚洲 | 日韩成人一区二区视频 | 人人爽人人爽人人爽 | 黄色www视频| 一本到在线视频 | 欧美大片一区二区三区 | 日韩精品专区 | 999资源站 | 性爱动漫| 97久久免费视频 | 一个人看的www日本高清视频 | 人人澡人人透人人爽 | 奇米精品一区二区三区在线观看一 | 国产白丝袜美女久久久久 | 中文字幕视频在线播放 | 国产粉嫩呻吟一区二区三区 | 伊人色综合网 | 激情婷婷六月 | 久久久精品一区二区涩爱 | 国产成人自拍网站 | 四川丰满妇女毛片四川话 | 黄色网址在线看 | 深田咏美在线x99av | 无码精品黑人一区二区三区 |