Pytest框架的GitHub項目Jenkins持續集成


Jenkins安裝Allure插件

1.進入jenkins系統管理 -> 管理插件

2.點擊可選插件

3.搜索框輸入Allure Jenkins Plugin

4.選中安裝,安裝后如下。

 

Jenkins安裝Allure Commandline工具

1.進入jenkins系統管理 -> 全局工具安裝(Global Tool Configuration)

2.找到Allure Commandline,點擊Allure Commandline安裝

3.輸入一個別名,取消勾選Install automatically

4.輸入已下載好的allure2.9.0所在路徑,注意:不要進入到bin目錄

5.點擊保存

 

Jenkins新建一個項目

1.選擇新建一個自由風格的軟件項目 -> 點擊確定

2.輸入一些項目描述

3.選擇GitHub 項目

4.輸入項目 url

 

源碼管理配置

5.勾選Git(前提要在"全局工具配置"填入Git本地路徑)

6.Repository URL輸入地址同第四步

7.點擊Add添加github的用戶名和密碼

 

構建觸發器

8.勾選Poll SCM # 根據定時任務,查看github版本是否更新,如果更新會自動構建項目

9.輸入crontab命令,舉例:*/1 * * * * # 每一分鍾檢查一次

 

構建(以Windows為例)

10.點擊增加構建步驟,選擇Execute windows batch command

11.Command輸入以下內容:

set path=%path%;D:\Anaconda3;D:\Anaconda3\Scripts;D:\Anaconda3\Library\bin;D:\Anaconda3\Library\usr\bin;D:\Anaconda3\Library\mingw-w64\bin
pytest
exit 0

注意:

-這里set path設置的是系統環境變量,如果你已經在系統環境變量里把以上東西放進path里了,這里可以忽略。

-因為我只是放在了個人環境變量里,所以在jekins直接運行pytest,會報錯'pytest' 不是內部或外部命令...

-運行jekins可以臨時把pytest放進環境變量里,在cmd運行where pytest找到pytest.exe所在目錄,我這里是在Anaconda3\Scripts,並且把其相關的也加入進來,就像去高級系統設置添加環境變量一樣,否則會報錯找不到模塊。

-jenkins執行windows命令,若退出代碼不為0 ,則jenkins會將構建標記為失敗,所以需要加上exit 0表示執行完成退出。

 

構建后操作

12.點擊增加構建后操作步驟,選擇Allure Report

13.Path路徑輸入:生成的報告文件夾名稱。(⚠️ 文件夾名稱與pytest生成的報告文件夾名稱一致)(我的是report文件夾:addopts = -s --alluredir=report)

14.設置完成點擊保存。

 

觸發項目構建

項目構建會運行測試代碼,構建方式有兩種:

1.手動觸發構建

2.更新github代碼,觸發器在定時任務到達時,會出發項目構建

 

成功后控制台輸出

Started by user admin
Running as SYSTEM
Building in workspace D:\Program Files (x86)\Jenkins\workspace\allure_test
using credential b3b8744d-d4b3-4053-aabf-53ec58085521
 > D:\Program Files (x86)\Git\bin\git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > D:\Program Files (x86)\Git\bin\git.exe config remote.origin.url https://github.com/JEyeshield/Test_Allure.git # timeout=10
Fetching upstream changes from https://github.com/JEyeshield/Test_Allure.git
 > D:\Program Files (x86)\Git\bin\git.exe --version # timeout=10
using GIT_ASKPASS to set credentials 
 > D:\Program Files (x86)\Git\bin\git.exe fetch --tags --force --progress -- https://github.com/JEyeshield/Test_Allure.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > D:\Program Files (x86)\Git\bin\git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
 > D:\Program Files (x86)\Git\bin\git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision 4959d39a771ba90b1d029fe25eb1d85c12c765b8 (refs/remotes/origin/master)
 > D:\Program Files (x86)\Git\bin\git.exe config core.sparsecheckout # timeout=10
 > D:\Program Files (x86)\Git\bin\git.exe checkout -f 4959d39a771ba90b1d029fe25eb1d85c12c765b8 # timeout=10
Commit message: "v2"
 > D:\Program Files (x86)\Git\bin\git.exe rev-list --no-walk 4959d39a771ba90b1d029fe25eb1d85c12c765b8 # timeout=10
[allure_test] $ cmd /c call C:\WINDOWS\TEMP\jenkins1408643635908210552.bat

D:\Program Files (x86)\Jenkins\workspace\allure_test>set path=C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS\System32;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;"D:\Program Files (x86)\Java\jdk1.8.0_144\bin;D:\Program Files (x86)\Java\jdk1.8.0_144\jre\bin;";"D:\Program Files (x86)\jmeter\apache-jmeter-5.1.1\bin;";D:\Program Files (x86)\Git\cmd;C:\WINDOWS\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;D:\Anaconda3;D:\Anaconda3\Scripts;D:\Anaconda3\Library\bin;D:\Anaconda3\Library\usr\bin;D:\Anaconda3\Library\mingw-w64\bin 

D:\Program Files (x86)\Jenkins\workspace\allure_test>pytest
============================= test session starts =============================
platform win32 -- Python 3.7.4, pytest-5.2.1, py-1.8.0, pluggy-0.13.0
rootdir: D:\Program Files (x86)\Jenkins\workspace\allure_test, inifile: pytest.ini, testpaths: ./scripts
plugins: allure-pytest-2.8.13, arraydiff-0.3, doctestplus-0.4.0, html-2.1.1, metadata-1.8.0, openfiles-0.4.0, remotedata-0.3.2
collected 4 items

scripts\test_001.py ...F

================================== FAILURES ===================================
__________________________ Test_Abc.test_abc_002[2] ___________________________

self = <scripts.test_001.Test_Abc object at 0x00000136BE490388>, a = 2

    @pytest.mark.parametrize('a', [0, 1, 2])
    @allure.severity(allure.severity_level.CRITICAL)
    @allure.step(title='第二個測試.')
    def test_abc_002(self, a):
        allure.attach('描述', '我是測試步驟002的描述~~~')
>       assert a != 2
E       assert 2 != 2

scripts\test_001.py:15: AssertionError
========================= 1 failed, 3 passed in 0.15s =========================

D:\Program Files (x86)\Jenkins\workspace\allure_test>exit 0 
[allure_test] $ "D:\Program Files (x86)\allure-2.9.0\bin\allure.bat" generate "D:\Program Files (x86)\Jenkins\workspace\allure_test\report" -c -o "D:\Program Files (x86)\Jenkins\workspace\allure_test\allure-report"
Report successfully generated to D:\Program Files (x86)\Jenkins\workspace\allure_test\allure-report
Allure report was successfully generated.
Creating artifact for the build.
Artifact was added to the build.
Build step 'Allure Report' changed build result to UNSTABLE
Finished: UNSTABLE

 

查看Allure Report報告內容

 


免責聲明!

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



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