Jenkins接口自動化測試(構建)平臺搭建

Python接口自動化測試零基礎入門到精通(2025最新版)

自動化測試流程

在進行平臺搭建前,我們首先要問自己:我需要搭建的平臺的功能是什么,要實現什么目標?

在我的理解中,自動化構建平臺的執行流程(目標)是:

  1. 我們將代碼提交到代碼托管工具上,如github、gitlab、gitee等。
  2. Jenkins要能夠檢測到我們的提交。
  3. Jenkins檢測到提交后,要自動拉取代碼,運行測試,并進行構建、打包。
  4. Jenkins執行完測試和構建后,要向相關人員發送構建結果。
  5. Jenkins要能夠向我們展示測試運行的分析。

其實還可以加上自動化部署——把成功的構建添加到web 容器。

自動化測試搭建

有了大致的目標,就可以一步步實現了。

代碼倉庫搭建

常用的代碼托管平臺有GitHub、Gitlab、Gitee等。我選擇了Gitlab。

Gitlab可以托管在Gitlab的網站上,也可以建立本地的Gitlab倉庫。

為了訪問更穩定,我選擇了在自己的阿里云服務器上搭建gitlab倉庫。

步驟:

  1. 服務器安裝Gitlab。可以通過寶塔安裝,也可以自己手動安裝。安裝后開放相應的端口,就可以訪問到Gitlab了。

  2. 創建賬號,登錄,創建一個項目

  3. 為了讓我們能夠向該項目提交代碼,需要進行ssh認證。將本地主機的SSH公鑰添加到遠程項目里。此外,如果遠程項目是私有的,那還要添加可訪問的用戶群組。

Jenkins 安裝

下載Jenkins的war包,放在Tomcat的webapps路徑下,然后重啟Tomcat。

開放相應的端口,然后就可以訪問到了。

Jenkins首次啟動時,會生成一個管理員賬號和密碼,一定要記得。

Jenkins 插件安裝

下面的配置過程中會使用到很多插件,在這里列出。配置時不再說明。

Git?、GitLab?、Email Extension?、Allure Jenkins Plugin、Maven Integration plugin

可參考博客:[Jenkins插件大全及用途簡介]((19條消息) Jenkins插件大全及用途簡介_pansaky的博客-CSDN博客_jenkins插件)

Jenkins配置maven

  1. 安裝maven

在系統管理-->全局工具配置中添加maven,如果服務器上已經安裝了maven,那么指定MAVEN_HOME。

如果沒有安裝,那么可以選擇版本,讓Jenkins自己安裝。

  1. 下載maven插件

    在系統管理-->插件管理中,搜索、安裝 Maven Integration plugin 。

  2. 建立一個maven任務

Jenkins 關聯代碼倉庫

在上面建立的maven任務的:配置-->源碼管理 中添加代碼倉庫。

這里,需要進行認證,添加Credentials:

輸入用戶名、密碼即可。然后選擇剛才添加的Credential。

這樣,我們就將Jenkins關聯到了代碼倉庫上。Jenkins就能夠從該代碼倉庫上面拉取代碼了。

Gitlab 提交觸發 Jenkins 自動構建

  1. 配置Jenkins觸發器

    在配置-->構建觸發器 中,選中 Build when a change is pushed to GitLab. GitLab webhook URL:***

    該URL在配置Gitlab鉤子時要用到。

    繼續,在構建觸發器-->高級 中,點擊generate,生成一個secret token。

    該token也在配置web hook 時要使用。

    配置完成后,點擊應用、保存。

  2. 配置Gitlab web hook

    什么是web hook?他就像一個魚鉤一樣,當有🐟到了,就拉一下。

    我們可以配置一個URL,當Gitlab檢測到事件時(如:有新的提交時),就會向配置的URL發送消息。

    釣魚佬,別睡了,有魚上鉤了!

    鏈接中輸入Jenkins觸發器那里的鏈接,私密授權碼輸入secret token

    配置完鉤子后,測試一下。返回HTTP 200,就算成功了。

  3. 配置Build

    上面的配置完成了提交代碼的自動下拉,但是怎么構建呢,還需要配置Build:

    由于使用的maven來進行構建,所以root pom要使用maven項目的pom文件。

    下面的Goals and options是構建時還要執行的指令,我們希望每一次構建都運行一下測試,因此填入test指令。

    這和我們在本地執行maven test指令差不多。

  4. 測試一下

    我們現在就完成了gitlab提交后的自動構建,來測試一下:

    向gitlab倉庫提交一個測試代碼,如果成功,應該能夠看到構建被觸發了:(我使用的是執行過的例子)

    然后可以看到構建的控制臺輸出:

    這就代表我們的自動構建功能實現了。

生成測試報告

我使用了Allure來生成測試報告。

  1. 安裝Allure Commandline

    我們使用了Allure的項目測試后,會生成一個allure results文件,該文件里面記錄了測試信息。

    Allure Commandline 的功能,就是解析這些信息,然后生成一個可視化的網頁界面。

    和maven安裝類似,可以指定本地的,也可以讓Jenkins自己安裝。

  2. 配置構建后操作

    Jenkins 使用maven構建后,要實現測試結果可視化,還要配置Allure來收集測試信息。

    添加一個Allure Report的構建后操作即可,Path中填寫的是Allure生成的可視化頁面的位置。

  3. 測試

    添加了Allure后,執行測試就可以看到可視化的測試報告了。

    注意,要使的Allure生效,我們的maven項目中,要添加Allure的插件。這樣才能在測試時收集測試信息。

    下面是一個可運行的pom:

    <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.source>1.8</maven.compiler.source><junit.version>5.7.1</junit.version><aspectj.version>1.8.10</aspectj.version></properties><dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>${junit.version}</version><scope>test</scope></dependency><!--        allure--><dependency><groupId>io.qameta.allure</groupId><artifactId>allure-junit5</artifactId><version>RELEASE</version><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>${junit.version}</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.3.1</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version><configuration><testFailureIgnore>false</testFailureIgnore><argLine>-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"</argLine><systemProperties><property><name>junit.jupiter.extensions.autodetection.enabled</name><value>true</value></property></systemProperties></configuration><dependencies><dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-surefire-provider</artifactId><version>1.2.0</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>${aspectj.version}</version></dependency></dependencies></plugin><plugin><groupId>io.qameta.allure</groupId><artifactId>allure-maven</artifactId><version>2.10.0</version><configuration><reportVersion>2.4.1</reportVersion></configuration></plugin></plugins></build>
    

    push 該使用了Allure的項目,構建后會生成Allure Report文件:

    點擊查看Allure Report文件:

郵件通知

最后一步啦!配置郵件通知,在構建后向相關人員發送郵件,報告構建情況。

  1. 安裝郵件插件

    由于Jenkins自帶的郵件功能比較雞肋,因此這里推薦安裝專門的郵件插件,不過下面也會順帶介紹如何配置Jenkins自帶的郵件功能作用。

    可以通過 系統管理→管理插件→可選插件,選擇Email Extension Plugin插件進行安裝:

    img

  2. 進行郵件配置

    這里既可以在 系統管理-->系統設置下配置,也可以在工作下進行配置。只是說在系統設置下配置的是全局的。

    • 設置jenkins地址和管理員郵箱地址

    img

    • 設置發件人等信息

      PS:這里的發件人郵箱地址切記要和系統管理員郵件地址保持一致(當然,也可以設置專門的發件人郵箱,不過不影響使用,根據具體情況設置即可)

      img

      上圖的默認收件人郵箱可以添加多人,中間用英文半角逗號隔開即可。

    • 配置郵件內容模版

      img

      <!DOCTYPE html>    
      <html>    
      <head>    
      <meta charset="UTF-8">    
      <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>    本郵件由系統自動發出,無需回復!<br/>            各位同事,大家好,以下為${PROJECT_NAME }項目構建信息</br> <td><font color="#CC0000">構建結果 - ${BUILD_STATUS}</font></td>   </tr>    <tr>    <td><br />    <b><font color="#0B610B">構建信息</font></b>    <hr size="2" width="100%" align="center" /></td>    </tr>    <tr>    <td>    <ul>    <li>項目名稱 : ${PROJECT_NAME}</li>    <li>構建編號 : 第${BUILD_NUMBER}次構建</li>    <li>觸發原因: ${CAUSE}</li>    <li>構建狀態: ${BUILD_STATUS}</li>    <li>構建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    <li>構建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>    <li>工作目錄 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>    <li>項目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li><li>系統allure測試報告:<a href="${PROJECT_URL}${BUILD_NUMBER}/allure">${PROJECT_URL}${BUILD_NUMBER}/allure</a></li></ul>    <h4><font color="#0B610B">失敗用例</font></h4>
      <hr size="2" width="100%" />
      $FAILED_TESTS<br/><h4><font color="#0B610B">最近提交(#$GIT_REVISION)</font></h4>
      <hr size="2" width="100%" />
      <ul>
      ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
      </ul>
      詳細提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/></td>    </tr>    </table>    
      </body>    
      </html> 
      
    • 設置郵件觸發機制

      img

      上面的幾步完成后,點擊應用,保存即可。

    • 配置Jenkins自帶的郵件功能

      配置內容如下,和Email Extension Plugin插件同樣的配置,可以通過勾選通過發送測試郵件測試配置按鈕來測試配置是否成功發送郵件,如下圖:

      img

      完成上面的系統設置后,點擊保存即可。

    • 配置構建后操作模塊

      進入構建后操作的模塊,然后會看到下面的內容,具體的配置信息如圖中標注:

      img

      接上圖:

      img

      配置內容默認即可,郵件內容類型可以根據自己的配置選擇,收件人列表可以從前面的系統設置中默認收件人選項配置。

  3. 測試

    構建后,應該收到郵件:

對 Jenkins 的理解

沒時間寫了。。以后有時間補上(那就是沒有了唄)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90716.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90716.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90716.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Day 22: 復習

機器學習數據處理與降維技術復習總結 前言 經過6天的學習&#xff0c;我們系統地學習了從基礎的Numpy數組操作到高級的降維算法&#xff0c;這些內容構成了機器學習數據預處理的重要知識體系。本文將對這一系列學習內容進行全面復習和總結&#xff0c;幫助大家建立完整的知識…

力扣 hot100 Day56

46. 全排列 給定一個不含重復數字的數組 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意順序 返回答案。 //抄的 class Solution { private:vector<vector<int>>result;vector<int> path; public:void backtracking(vector<int>& nu…

Android 編碼規范全指南

在 Android 開發領域&#xff0c;代碼不僅是功能實現的載體&#xff0c;更是團隊協作與項目迭代的基礎。一套完善的編碼規范&#xff0c;能讓代碼從 “可運行” 升級為 “易維護、可擴展、低風險”。本文基于 Google、Square 等頂尖團隊的實踐經驗&#xff0c;結合國內 Android…

[RPA] Excel中的字典處理

案例1一個Excel文件總共有2個Sheet頁&#xff0c;分別為總表和對照表通過對照表sheet頁&#xff0c;設置價格對照字典對照表循環總表sheet頁&#xff0c;根據循環到的商品名稱&#xff0c;找到對應字典中的價格&#xff0c;并計算出總價總表將總價寫入到Excel表中C列&#xff0…

基于NSGAII優化算法的車間生產調度matlab仿真

目錄 1.程序功能描述 2.測試軟件版本以及運行結果展示 3.部分程序 4.算法理論概述 5.參考文獻 6.完整程序 1.程序功能描述 車間生產調度是制造業的核心環節&#xff0c;其目標是在滿足設備約束、工序優先級等條件下&#xff0c;優化多個相互沖突的生產指標&#xff08;如…

Cmake、VS2019、C++、openGLopenCV環境安裝

在 CMake 和 Visual Studio 2019 環境下安裝和配置 OpenGL、OpenCV 以及 CUDA 可能會有些復雜&#xff0c;因為涉及的組件多且相互依賴。以下是一個詳細的指南&#xff0c;幫助您逐步完成安裝和配置。 1. 前提條件 在開始之前&#xff0c;請確保您已安裝以下軟件&#xff1a; …

視頻二維碼在產品設備說明書中的應用

在當今數字化的時代&#xff0c;傳統的產品設備說明書正面臨著一場變革。文字和圖片雖然能提供基本信息&#xff0c;但在復雜設備的安裝、操作和故障排除方面&#xff0c;往往顯得力不從心。而視頻二維碼的出現&#xff0c;為這一困境提供了完美的解決方案&#xff0c;它將冰冷…

【Pytest 使用教程】

pytest 使用 test_basic.py Pytest 完全實戰手冊 一、核心概念與基礎 1、在pytest框架下運行測試用例&#xff0c;最基礎的一共有三點。導入pytest的包寫一個方法&#xff0c;或者類。后面運行的時候&#xff0c;相當于運行這個方法&#xff0c;或者類里的方法&#xff0c;無需…

基于OpenOCD 的 STM32CubeIDE 開發燒錄調試環境搭建 DAPLINK/STLINK

需要部署一個開發環境,實現h7的板子通過daplink功能給目標板燒寫程序(同事要將這個過程用fpga實現),需要通過openocd+gdb+daplink stm32; 總結:單條命令執行太麻煩,參考4寫成腳本文件: 獨立腳本使用Openocd ? 在**“在Stm32CubeIDE環境下使用DAP-Link仿真”**一文中…

嵌入式硬件篇---zigbee無線串口通信問題

使用 ZigBee 進行無線串口通信時&#xff0c;接收異常&#xff08;如丟包、亂碼、完全無法接收&#xff09;是常見問題&#xff0c;其原因涉及射頻通信特性、網絡機制、硬件配置、環境干擾等多個層面。以下從具體機制出發&#xff0c;詳細分析可能的原因&#xff1a;一、射頻層…

【AI周報】2025年7月26日

【AI周報】2025年7月第四周觀察&#xff1a;GitHub Spark重塑開發范式&#xff0c;中美AI政策對壘升級 省流版靜態頁面周報&#xff0c;為方便各位看官快速食用&#xff0c;我準備了摘要版周報&#xff0c;歡迎訪問&#xff1a;20250726周報 引言&#xff1a;本周焦點速覽 2…

HTML:從 “小白” 到 “標簽俠” 的修煉手冊

目錄 一、HTML&#xff1a;網頁的 “骨架” 不是骷髏架 二、文本標簽&#xff1a;文字的 “華麗變身” 術 1. 標題標簽&#xff1a;文字界的 “領導班子” 2. 段落標簽&#xff1a;文字的 “專屬保姆” 3. 文本格式化標簽&#xff1a;給文字 “穿花衣” 三、鏈接標簽&…

python3GUI--基于YOLO的火焰與煙霧檢測系統By:PyQt5(詳細圖文介紹)

文章目錄一&#xff0e;前言1.引言2.正文二&#xff0e;核心內容1.數據集2.模型訓練3.界面窗口1.登錄注冊界面2.核心功能界面3.檢測告警提示窗口三&#xff0e;.核心界面模塊介紹1.頂部信息區域2.數據輸入3.參數配置4.告警設置5.操作臺6.關于7.指標變化8.異常速覽9.日志輸出10.…

基于Transform、ARIMA、LSTM、Prophet的藥品銷量預測分析

文章目錄有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主一、項目背景二、數據準備與預處理三、模型選擇與方法設計1. ARIMA 模型&#xff1a;傳統統計方法的基線構建2. LSTM 模型&#xff1a;引入記憶機制的深度學習方法3. Transformer 模型&#…

LLM隱藏層與logits數值的簡單理解

LLM的“隱藏層數值”和“logits數值” 代表什么,范圍是多少 “隱藏層數值”和“logits數值”是兩個關鍵概念——它們分別對應模型“理解信息”和“輸出決策”的核心環節。 一、先明確基礎:LLM的“思考”流程 LLM本質是“輸入文本→處理信息→輸出結果”的神經網絡。簡單說…

Vue》》@ 用法

使用 別名導入 // 導入 src/components/Button.vue import Button from /components/Button.vue// 導入 src/utils/helper.js import { helperFunc } from /utils/helper// 導入 src/store/index.js import store from /store

20250726-1-Kubernetes 網絡-Service存在的意義_筆記

一、Service控制器 1. Service存在的意義 1)基本場景 ?? 動態IP問題:Pod IP具有短暫性,銷毀重建后IP會變化(示例:原IP 169.130重建后變為169.132) 服務發現需求:需要穩定入口訪問同一服務的多個Pod,避免因Pod變動導致服務中斷 負載均衡需求:多個Pod副本需要統一訪…

在一個存在的包里面編寫msg消息文件

前言盡管最佳實踐是在專門的接口包中聲明接口&#xff0c;但有時在同一個包中完成接口的聲明、創建和使用會更為便捷。創建文件創建好msg/AddressBook.msg文件&#xff0c;在你的包的目錄下package.xml<buildtool_depend>rosidl_default_generators</buildtool_depend…

華為服務器操作系統openEuler介紹與安裝

一、openEuler概述 1.1、openEuler介紹 openEuler&#xff08;簡稱 “歐拉”&#xff09;是華為開源的服務器操作系統&#xff0c;是基于Linux穩定系統內核的、面向企業級的通用服務器架構平臺。能夠滿足客戶從傳統IT基礎設施到云計算服務的需求&#xff0c;打造了完善的從芯…

CUDA雜記--FP16與FP32用途

FP16&#xff08;半精度浮點數&#xff09;和FP32&#xff08;單精度浮點數&#xff09;是計算機中用于表示浮點數的兩種常見格式&#xff0c;它們在存儲空間、數值范圍、精度、計算效率等方面有顯著區別。以下從核心差異、適用場景等方面詳細說明&#xff1a; 一、核心差異&am…