欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解用Pytest+Allure生成漂亮的HTML圖形化測(cè)試報(bào)告

 更新時(shí)間:2020年03月31日 15:33:24   作者:liuchunming033  
這篇文章主要介紹了詳解用Pytest+Allure生成漂亮的HTML圖形化測(cè)試報(bào)告,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

對(duì)于軟件測(cè)試工作來(lái)說(shuō),測(cè)試報(bào)告是非常重要的工作產(chǎn)出。一個(gè)漂亮、清晰、格式規(guī)范、內(nèi)容完整的測(cè)試報(bào)告,既能最大化我們的測(cè)試工作產(chǎn)出,又能夠減少開(kāi)發(fā)人員和測(cè)試人員的溝通成本。

本篇文章將介紹如何使用開(kāi)源的測(cè)試報(bào)告生成框架Allure生成規(guī)范、格式統(tǒng)一、美觀的測(cè)試報(bào)告。
通過(guò)這篇文章的介紹,你將能夠:

  • 將Allure與Pytest測(cè)試框架相結(jié)合;
  • 如何定制化測(cè)試報(bào)告內(nèi)容
  • 執(zhí)行測(cè)試之后,生成Allure格式的測(cè)試報(bào)告。
  • 如何與Jenkins集成。
  • 將測(cè)試環(huán)境信息展示到測(cè)試報(bào)告中。

1、Allure測(cè)試報(bào)告介紹

Allure是一款輕量級(jí)并且非常靈活的開(kāi)源測(cè)試報(bào)告框架。 它支持絕大多數(shù)測(cè)試框架, 例如TestNG、Pytest、JUint等。它簡(jiǎn)單易用,易于集成。下面就Pytest如何與Allure集成做詳細(xì)介紹。

2、Pytest框架集成Allure

Pytest是Python的單元測(cè)試框架,非常方便和易用。強(qiáng)烈推薦對(duì)于用Python進(jìn)行測(cè)試工作的小伙伴使用這個(gè)測(cè)試框架,相比與Python自帶的UnitTest好用太多太多。這篇文章我不會(huì)介紹太多Pytest測(cè)試框架的使用,今天主要是介紹如何將測(cè)試報(bào)告生成工具Allure集成到Pytest中。

2.1 安裝Allure Pytest Plugin

allure-pytest是Pytest的一個(gè)插件,通過(guò)它我們可以生成Allure所需要的用于生成測(cè)試報(bào)告的數(shù)據(jù)。安裝allure-pytest插件方法:

$ pip install allure-pytest

2.2 改造基于Pytest的測(cè)試用例

allure-pytest的官方文檔中詳細(xì)介紹了allure-pytest所具有的功能。本篇文章不會(huì)再翻譯一遍,而是從實(shí)際入手,給大家介紹如何將其應(yīng)用到自己的框架中。

為了使用Allure生成報(bào)告,需要在測(cè)試腳本中加入Allure特性。而這個(gè)操作并不會(huì)對(duì)原有的測(cè)試用例邏輯產(chǎn)生任何變動(dòng)。

直接看下面的腳本,我通過(guò)在腳本中添加注釋的方式給大家解釋allure特性的用途。比如測(cè)試腳本是test_shopping_trolley.py:

#!/usr/bin/env python
# coding=utf-8

import pytest
import allure


@allure.feature('購(gòu)物車功能') # 用feature說(shuō)明產(chǎn)品需求,可以理解為JIRA中的Epic
class TestShoppingTrolley(object):
  @allure.story('加入購(gòu)物車') # 用story說(shuō)明用戶場(chǎng)景,可以理解為JIRA中的Story
  def test_add_shopping_trolley(self):
    login('劉春明', '密碼') # 步驟1,調(diào)用“step函數(shù)”
    with allure.step("瀏覽商品"): # 步驟2,step的參數(shù)將會(huì)打印到測(cè)試報(bào)告中
      allure.attach('筆記本', '商品1') # attach可以打印一些附加信息
      allure.attach('手機(jī)', '商品2')
    with allure.step("點(diǎn)擊商品"): # 步驟3
      pass
    with allure.step("校驗(yàn)結(jié)果"): # 步驟4
      allure.attach('添加購(gòu)物車成功', '期望結(jié)果')
      allure.attach('添加購(gòu)物車失敗', '實(shí)際結(jié)果')
      assert 'success' == 'failed'

  @allure.story('修改購(gòu)物車')
  def test_edit_shopping_trolley(self):
    pass

  @pytest.mark.skipif(reason='本次不執(zhí)行')
  @allure.story('刪除購(gòu)物車中商品')
  def test_delete_shopping_trolley(self):
    pass


@allure.step('用戶登錄') # 將函數(shù)作為一個(gè)步驟,調(diào)用此函數(shù)時(shí),報(bào)告中輸出這個(gè)步驟,我把這樣的函數(shù)叫“step函數(shù)”
def login(user, pwd):
  print(user, pwd)

上面使用了Allure的幾個(gè)特性:

  • @allure.feature # 用于描述被測(cè)試產(chǎn)品需求
  • @allure.story # 用于描述feature的用戶場(chǎng)景,即測(cè)試需求
  • with allure.step # 用于描述測(cè)試步驟,將會(huì)輸出到報(bào)告中
  • allure.attach # 用于向測(cè)試報(bào)告中輸入一些附加的信息,通常是一些測(cè)試數(shù)據(jù),截圖等
  • @pytest.allure.step # 用于將一些通用的函數(shù)作為測(cè)試步驟輸出到報(bào)告,調(diào)用此函數(shù)的地方會(huì)向報(bào)告中輸出步驟

3、生成Allure測(cè)試報(bào)告

測(cè)試腳本中添加了Allure特性之后,可以通過(guò)兩步,就可以展示出測(cè)試報(bào)告了。

第一步,生成測(cè)試報(bào)告數(shù)據(jù)

在py.test執(zhí)行測(cè)試的時(shí)候,指定–alluredir選項(xiàng)及結(jié)果數(shù)據(jù)保存的目錄:

$ py.test test/ --alluredir ./result/

./result/中保存了本次測(cè)試的結(jié)果數(shù)據(jù)。另外,還可以執(zhí)行指定features或者stories執(zhí)行一部分測(cè)試用例,比如執(zhí)行”購(gòu)物車功能“下的”加入購(gòu)物車“子功能的測(cè)試用例:

$ py.test test/ --allure_features='購(gòu)物車功能' --allure_stories='加入購(gòu)物車'

第二步,生成測(cè)試報(bào)告頁(yè)面

通過(guò)下面的命令將./result/目錄下的測(cè)試數(shù)據(jù)生成測(cè)試報(bào)告頁(yè)面:

$ allure generate ./result/ -o ./report/ --clean

–clean選項(xiàng)目的是先清空測(cè)試報(bào)告目錄,再生成新的測(cè)試報(bào)告。

這一步需要提前安裝allure命令行,如果是Mac電腦,推薦使用Homebrew安裝。

$ brew install allure

4、解讀測(cè)試報(bào)告

打開(kāi)生成的測(cè)試報(bào)告后,瀏覽器被自動(dòng)調(diào)起,展示測(cè)試報(bào)告。下面我們分別看看測(cè)試報(bào)告的幾個(gè)頁(yè)面。

4.1、首頁(yè)


首頁(yè)中展示了本次測(cè)試的測(cè)試用例數(shù)量,成功用例、失敗用例、跳過(guò)用例的比例,測(cè)試環(huán)境,SUITES,F(xiàn)EATURES BY STORIES等基本信息,當(dāng)與Jenkins做了持續(xù)置成后,TREND區(qū)域還將顯示,歷次測(cè)試的通過(guò)情況。
首頁(yè)的左邊欄,還從不同的維度展示測(cè)試報(bào)告的其他信息,大家可以自己點(diǎn)進(jìn)去看看。

4.2、Behaviors頁(yè)面

進(jìn)入Behaviors頁(yè)面,這個(gè)頁(yè)面按照FEATURES和 STORIES展示測(cè)試用例的執(zhí)行結(jié)果:


從這個(gè)頁(yè)面可以看到“購(gòu)物車功能”這個(gè)FEATURES包含的三個(gè)STORIES的測(cè)試用例執(zhí)行情況。

4.3、Suites頁(yè)面

Allure測(cè)試報(bào)告將每一個(gè)測(cè)試腳本,作為一個(gè)Suite。在首頁(yè)點(diǎn)擊Suites區(qū)域下面的任何一條Suite,都將進(jìn)入Suites頁(yè)面。


這個(gè)頁(yè)面,以腳本的目錄結(jié)構(gòu)展示所有測(cè)試用例的執(zhí)行情況。

4.4、Graphs頁(yè)面

這個(gè)頁(yè)面展示了本次測(cè)試結(jié)果的統(tǒng)計(jì)信息,比如測(cè)試用例執(zhí)行結(jié)果狀態(tài)、測(cè)試用例重要等級(jí)分布、測(cè)試用例執(zhí)行時(shí)間分布等。

4.5、測(cè)試用例詳情頁(yè)面

在Suites頁(yè)面上點(diǎn)擊任何一條測(cè)試用例,Suites頁(yè)面的右側(cè)將展示這條用例的詳細(xì)執(zhí)行情況。


從這個(gè)頁(yè)面可以看到測(cè)試用例執(zhí)行的每一個(gè)步驟,以及每個(gè)步驟的執(zhí)行結(jié)果,每一個(gè)步驟都可以添加附件,作為重要信息補(bǔ)充。從這里,對(duì)于失敗的測(cè)試用例,可以一目了然看到原因。

5、Jenkins中生成Allure報(bào)告

5.1、安裝 Allure Plugin

首先需要給Jenkins安裝Allure Plugin。在Jenkins的插件管理頁(yè)面,搜索“allure”,在搜索結(jié)果頁(yè),選擇“Allure Jenkins Plugin”進(jìn)行安裝。

安裝完成之后重啟一下Jenkins。

在Jenkins的“全局工具管理”頁(yè)面,找到Allure Commandline模塊進(jìn)行安裝:


點(diǎn)擊后,彈出下面的頁(yè)面,輸入Allure的命令別名和版本后,點(diǎn)擊Apply 和Save。

5.2、修改Pipeline

在Pipeline的定義中,在執(zhí)行測(cè)試用例的環(huán)節(jié)增加--alluredir ./allure-results保存測(cè)試結(jié)果數(shù)據(jù),并在構(gòu)建后的步驟中增加allure includeProperties: false, jdk: '', report: 'jenkins-allure-report', results: [[path: 'allure-results']]將測(cè)試結(jié)果數(shù)據(jù)生成測(cè)試報(bào)告頁(yè)面,完整的Jenkinsfile如下:

pipeline {
  // ...
  stages {
  //...
    stage('執(zhí)行測(cè)試用例') {
      steps {
        sh "py.test tests/ --alluredir ./allure-result"
      }
    }
  }
  post {
      always{
      script {
        allure includeProperties: false, jdk: '', report: 'jenkins-allure-report', results: [[path: 'allure-result']]
      }
    }
  }
}

這樣,我們的Jenkins Job執(zhí)行完測(cè)試用例時(shí)候,將在Job的主頁(yè)面上看到Allure Report圖標(biāo),點(diǎn)擊進(jìn)去就看到了Allure Report報(bào)告。


如果你現(xiàn)在依然使用的是Freestyle風(fēng)格的job。那么需要在構(gòu)建后步驟中,添加Allure Report步驟,將allure的報(bào)告數(shù)據(jù)添加到Path中:


這樣當(dāng)job執(zhí)行完成后,也可以看到allure測(cè)試報(bào)告了。

6、增加測(cè)試環(huán)境到Allure報(bào)告中

在4.1小節(jié)展示的報(bào)告首頁(yè)中,有一個(gè)區(qū)域可以展示測(cè)試執(zhí)行的環(huán)境信息。但是目前allure-pytest插件中并沒(méi)有實(shí)現(xiàn)。不過(guò)在之前我用過(guò)的另外一個(gè)插件pytest-allure-adaptor是支持的。可惜pytest-allure-adaptor插件項(xiàng)目已經(jīng)被標(biāo)記為Deprecated了。

將測(cè)試環(huán)境信息輸出到報(bào)告中,對(duì)于測(cè)試報(bào)告來(lái)講是非常有意義的。我們有沒(méi)有什么變通的辦法可以實(shí)現(xiàn)呢?在網(wǎng)上進(jìn)行了一番查詢,發(fā)現(xiàn)stackoverflow上也有很多關(guān)于這個(gè)話題的討論。其中一個(gè)話題還給出了Workaround方法,這里給大家貼上鏈接:
https://stackoverflow.com/questions/52030518/recommend-workaround-for-the-missing-environmental-support-in-pytest-allure

這個(gè)Workaround的方法也比較簡(jiǎn)單方便,就是在allure-results目錄中,新建environment.properties文件,并以key=value形式,在其中寫入環(huán)境相關(guān)的信息,比如:

browser=chrome
backend=staging
domain=http://baidu.com

這樣,在執(zhí)行allure generate ./result/ -o ./report/ --clean生成測(cè)試報(bào)告時(shí),將能將測(cè)試環(huán)境信息融合到測(cè)試報(bào)告的頁(yè)面中了。


這樣看,測(cè)試報(bào)告是不是更顯得完整了呢?

不過(guò),這種手動(dòng)方式還是比較麻煩,下面我們看看如何在pytest框架中,自動(dòng)實(shí)現(xiàn)上面的workaround。

在Pytest中,有一個(gè)hook函數(shù)叫作pytest_sessionfinish,根據(jù)官方文檔的描述,這個(gè)函數(shù)是在整個(gè)測(cè)試完成后被調(diào)用的,我們可以在其內(nèi)部實(shí)現(xiàn)我們自己的邏輯。

我們將生成environment.properties文件放到pytest_sessionfinish中實(shí)現(xiàn),再適合不過(guò)了。在測(cè)試項(xiàng)目的根目錄下創(chuàng)建conftest.py文件,在其中實(shí)現(xiàn)pytest_sessionfinish函數(shù),代碼如下。

#!/usr/bin/env python
# coding=utf-8

def pytest_sessionfinish(session):
  with open("{}/result/environment.properties".format(session.config.rootdir), "w") as f:
    f.write("browser=chrome\nbackend=staging\ndomain=http://baidu.com")

這樣,我們每次測(cè)試完成后,就自動(dòng)將我們的測(cè)試環(huán)境信息添加到測(cè)試報(bào)告中了。

7、總結(jié)

團(tuán)隊(duì)內(nèi)部可能不同項(xiàng)目使用的測(cè)試框架不一樣,每個(gè)測(cè)試框架生成的測(cè)試報(bào)告也不一樣。但由于Allure報(bào)告支持很多測(cè)試框架,通過(guò)Allure可以生成格式一致的測(cè)試報(bào)告,這就對(duì)外提供格式一致的測(cè)試報(bào)告提供了方便。

目前測(cè)試工程實(shí)踐中,另外一個(gè)常用的自動(dòng)化測(cè)試工具組合是采用的Java+TestNG的架構(gòu),TestNG框架如何集成Allure也非常簡(jiǎn)單。大家可以嘗試參考官方文檔來(lái)實(shí)現(xiàn)集成一下。

到此這篇關(guān)于詳解用Pytest+Allure生成漂亮的HTML圖形化測(cè)試報(bào)告的文章就介紹到這了,更多相關(guān)Pytest+Allure生成HTML圖形化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論