【Python】使用Pytest集成Allure生成漂亮的圖形測試報告


前言

大概兩個月前寫過一篇《【測試設計】使用jenkins 插件Allure生成漂亮的自動化測試報告》的博客,但是其實Allure首先是一個可以獨立運行的測試報告生成框架,然后才有了Jenkins的集成插件。

這一次主要介紹如何把Allure集成到Python的Pytest單元測試框架中。

依賴包安裝

Pytest

Pytest是Python的單元測試框架,非常方便和易用。可以規模化以及編寫更加復雜的測試用例。安裝方法如下:

pip install pytest

Allure Pytest Adaptor

Allure Pytest Adaptor是Pytest的一個插件,通過它我們可以生成Allure所需要的用於生成測試報告的數據。安裝方法如下:

pip install pytest-allure-adaptor

改造基於Pytest的測試用例

為了使用Allure生成報告,需要在conftest.py和測試腳本中加入Allure特性。pytest-allure-adaptor官網中詳細介紹了pytest-allure-adaptor所具有的功能。我們這次從實際入手,給大家介紹如何將其應用到自己的框架中。

首先,conftest.py中可以通過allure.environment方法將測試環境的信息輸出到報告中,比如將測試時用的host和測試用的browser添加到測試報告中:

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

import pytest
import allure
import yaml

@pytest.fixture(scope="session", autouse=True)
def env(request):
    """
    Parse env config info
    """
    root_dir = request.config.rootdir
    config_path = '{0}/config/env_config.yml'.format(root_dir)
    with open(config_path) as f:
        env_config = yaml.load(f) # 讀取配置文件

    allure.environment(host=env_config['host']['domain']) # 測試報告中展示host
    allure.environment(browser=env_config['host']['browser']) # 測試報告中展示browser

    return env_config

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

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

import pytest
import allure


@allure.feature('購物車功能')  # feature定義功能
class TestShoppingTrolley(object):
    @allure.story('加入購物車')  # story定義用戶場景
    def test_add_shopping_trolley(self):
        login('劉春明', '密碼')  # 調用“步驟函數”
        with allure.step("瀏覽商品"):  # 將一個測試用例分成幾個步驟,將步驟打印到測試報告中,步驟2
            allure.attach('商品1', '劉春明')  # attach可以打印一些附加信息
            allure.attach('商品2', 'liuchunming')
        with allure.step("點擊商品"):  # 將一個測試用例分成幾個步驟,將步驟打印到測試報告中,步驟3
            pass
        with allure.step("校驗結果"):
            allure.attach('期望結果', '添加購物車成功')
            allure.attach('實際結果', '添加購物車失敗')
            assert 'success' == 'failed'

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

    @pytest.mark.skipif(reason='本次不執行')
    @allure.story('刪除購物車')
    def test_delete_shopping_trolley(self):
        pass


@allure.step('用戶登錄')  # 還可以將一個函數作為一個步驟,調用此函數時,報告中輸出一個步驟,步驟名字通常是函數名,我把這樣的函數叫“步驟函數”
def login(user, pwd):
    print(user, pwd)

上面使用了Allure的幾個特性:

  • @allure.feature # 用於定義被測試的功能,被測產品的需求點
  • @allure.story # 用於定義被測功能的用戶場景,即子功能點
  • with allure.step # 用於將一個測試用例,分成幾個步驟在報告中輸出
  • allure.attach # 用於向測試報告中輸入一些附加的信息,通常是一些測試數據信息
  • @pytest.allure.step # 用於將一些通用的函數作為測試步驟輸出到報告,調用此函數的地方會向報告中輸出步驟

生成測試報告

測試腳本中添加了Allure特性之后,在執行測試的時候需要先生成Allure報告所需要的測試結果數據。在py.test執行測試的時候,指定–alluredir選項及測試數據保存的目錄即可:

運行測試

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

./result/中保存了本次測試的結果數據。另外,還可以執行指定features或者stories執行一部分測試用例,比如執行‘購物車功能’下的‘加入購物車’子功能的測試用例:

py.test test/ --allure_features='購物車功能' --allure_stories='加入購物車'

生成測試報告

接下來我們可以利用上面命令產生的測試數據使用命令行生成Allure測試報告了。命令如下:

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

打開測試報告

通過下面的命令打開測試報告:

allure open -h 127.0.0.1 -p 8083 ./report/

測試報告會使用默認的瀏覽器打開,下圖是github上面的一個圖形示例

其他的測試報告可以到我另外一個博客進行查看《【測試設計】使用jenkins 插件Allure生成漂亮的自動化測試報告》詳細的測試報告。

相關的GitHub地址:https://github.com/allure-framework


免責聲明!

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



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