pytest-測試報告

pytest-html生成測試報告插件

在pytest中,我們使用pytest-html該插件來生成插件。

下載

pip install pytest-html
pip37 install -i https://pypi.doubanio.com/simple pytest-html
python -m pip install -i https://pypi.doubanio.com/simple pytest-html

使用

在配置文件中配置:

[pytest]
addopts = --html=report/report.html

意思是在執(zhí)行測試用例的時候,需要生成HTML報告。將報告生成到項目根目錄下的report文件夾中,報告的名字是report.html

allure生成測試用例報告的框架插件

我們使用pytest框架搭配allure框架,生成一個比pytest-html生成的測試報告,漂亮100倍的測試報告。

下載

pip install -i https://pypi.doubanio.com/simple allure-pytest

使用

在配置文件的addopts參數后,追加

[pytest]
addopts = --alluredir ./report/allure_html

意思,將allure生成的測試報告數據,創(chuàng)建到項目的根目錄下的report/allure_html目錄中。

注意:

  1. allure-pytest模塊只能幫我們將測試報告的數據創(chuàng)建出來,但是無法生成HTML格式的測試報告。
  2. 生成的數據當再次運行的時候,不會清空,而是以追加的方式

allure插件的安裝

前提是,allure插件依賴Java環(huán)境。

  1. Windows安裝allure

    1. 將壓縮包解壓合到合適目錄
    2. 將安裝目錄中的bin目錄添加到系統(tǒng)的環(huán)境變量中
    3. 測試:終端執(zhí)行allure --version,返回版本即可
  2. mac安裝allure

    1. 將tgz壓縮包解壓合到合適目錄
    2. 將安裝目錄中的bin目錄添加到系統(tǒng)的環(huán)境變量中:/etc/profile
    PATH='/usr/local/src/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:C:\Program Files\allure-2.10.0\bin'
    

allure插件讀取json/txt文件生成測試報告

allure generate report/result -o report/allure_html --clean

使用

  1. 首先將終端的路徑切換到項目的根目錄下
  1. 使用命令生成測試報告
allure generate report/allure_html -o report/allure_report
  • report/allure_html 數據來源
  • -o report/allure_report 生成測試報告到哪個目錄

注意,如果再次運行上述命令,需要加上--clean, --clean就是清空并覆蓋報告

allure generate report/allure_html -o report/allure_report --clean

allure工具的問題及解決

如果生成的報告展示時,無數據,就終端執(zhí)行下面的命令:

allure open report/allure_html

allure工具生成的測試報告在report/allure_html

title和描述

為了allure報告更加美觀,我們可以為用例函數和用例方法,添加title和description,提高可讀性:

import pytest
import allure


@allure.title("主頁用例")
@allure.description("測試主頁的用例")
def test_index():
    assert 1

@allure.title("數據庫用例")
@allure.description("測試數據庫的用例")
def test_db():
    assert 0

@allure.title("測試登錄功能的類")
class TestCaseLogin:

    @allure.title("登錄用例1")
    @allure.description("登錄用例1的描述")
    def test_login_01(self):
        print('test case -01')
        assert 1

    @allure.title("登錄用例2")
    @allure.description("登錄用例2的描述")
    def test_login_02(self):
        print('test case -02')
        assert 1

feature和story

import pytest
import allure


@allure.feature("其他用例")
class TestOthers(object):

    @allure.story("其他用例類下的主頁用例")
    @allure.title("主頁用例")
    @allure.description("測試主頁的用例")
    def test_index(self):
        assert 1

    @allure.story("其他用例類下的數據庫用例")
    @allure.title("數據庫用例")
    @allure.description("測試數據庫的用例")
    def test_db(self):
        assert 0


@allure.feature("登錄功能")
@allure.title("測試登錄功能的類")
class TestCaseLogin:

    @allure.story("登錄用例1")
    @allure.title("登錄用例1")
    @allure.description("登錄用例1的描述")
    def test_login_01(self):
        print('test case -01')
        assert 1

    @allure.story("登錄用例2")
    @allure.title("登錄用例2")
    @allure.description("登錄用例2的描述")
    def test_login_02(self):
        print('test case -02')
        assert 1
image.png

SEVERITY

allure中對bug的嚴重(severity)級別也有定義,allure使用severity來標識測試用例或者測試類的bug級別,分為blocker,critical,normal,minor,trivial5個級別。一般,bug分為如下幾個級別:

  • Blocker級別:中斷缺陷(客戶端程序無響應,無法執(zhí)行下一步操作),系統(tǒng)無法執(zhí)行、崩潰或嚴重資源不足、應用模塊無法啟動或異常退出、無法測試、造成系統(tǒng)不穩(wěn)定。
  • Critical級別:即影響系統(tǒng)功能或操作,主要功能存在嚴重缺陷,但不會影響到系統(tǒng)穩(wěn)定性。比如說一個服務直接不可用了,微信不能發(fā)消息,支付寶不能付款這種,打開直接報錯。
  • Major:即界面、性能缺陷、兼容性。如操作界面錯誤(包括數據窗口內列名定義、含義是否一致)、長時間操作無進度提示等。
  • Normal級別:普通缺陷(數值計算錯誤),是指非核心業(yè)務流程產生的問題,比如說知乎無法變更頭像,昵稱等。這個要看自己的定義。
  • Minor/Trivial級別:輕微缺陷(必輸項無提示,或者提示不規(guī)范),比如各種影響體驗,但不影響使用的內容。
import pytest
import allure


@allure.feature("其他用例")
class TestOthers(object):

    @allure.severity(allure.severity_level.BLOCKER)
    @allure.story("其他用例類下的主頁用例")
    @allure.title("主頁用例")
    @allure.description("測試主頁的用例")
    def test_index(self):
        assert 1
    @allure.severity(allure.severity_level.CRITICAL)
    @allure.story("其他用例類下的數據庫用例")
    @allure.title("數據庫用例")
    @allure.description("測試數據庫的用例")
    def test_db(self):
        assert 0


@allure.feature("登錄功能")
@allure.title("測試登錄功能的類")
class TestCaseLogin:
    @allure.severity(allure.severity_level.MINOR)
    @allure.story("登錄用例1")
    @allure.title("登錄用例1")
    @allure.description("登錄用例1的描述")
    def test_login_01(self):
        print('test case -01')
        assert 1
    @allure.severity(allure.severity_level.TRIVIAL)
    @allure.story("登錄用例2")
    @allure.title("登錄用例2")
    @allure.description("登錄用例2的描述")
    def test_login_02(self):
        print('test case -02')
        assert 1

    @allure.severity(allure.severity_level.NORMAL)
    @allure.story("登錄用例3")
    @allure.title("登錄用例3")
    @allure.description("登錄用例3的描述")
    def test_login_03(self):
        print('test case -03')
        assert 0
image.png

優(yōu)點:我們能通過查看severity的圖,來清晰看到都不同的bug分布和級別,從而方便我們優(yōu)先修復哪
些bug

dynamic

該參數常用于跟參數化搭配,為用例添加一些相關信息

import pytest
import allure

l = [
    {"url": "baidu.com", "title": "百度", "desc": "測試百度接口", 'method':"get", 'severity': "NORMAL"},
    {"url": "zhihu.com", "title": "知乎", "desc": "測試知乎接口", 'method':"get", 'severity': "TRIVIAL"},
]

@pytest.mark.parametrize("item", l)
def test_case(item):
    print(item['url'])
    allure.dynamic.title(item['title'])
    allure.dynamic.description(item['desc'])
    assert 1
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容