1. 程式人生 > 程式設計 >Python測試框架--Allure

Python測試框架--Allure

  嚴格意義上講 Allure 不算是測試框架,但是它是生成漂亮測試報告的開源工具,搭配 Pytest 測試框架食用更搭。

  也就是說 Allure 是在 Pytest 執行完生成的測試資料的基礎上,對測試資料進行處理統計,生成格式統一、美觀的測試報告。

一、Allure初識

1. 什麼是 Allure

  Allure 是由Qameta Software團隊開源的一款旨在於解決讓每個人能更容易生成並更簡潔閱讀的測試報告框架。它支援大多數的測試框架,如:Pytest、TestNG等,簡單易用便於整合。

2. Allure環境搭建

  工欲善其事必先利其器,Allure 框架基於其他的測試框架使用,例如:Pytest。

# windows env
source env/Scripts/activate

# 安裝 pytest 和 pytest-allure-adaptor
pip3 install pytest
# Allure Pytest Adaptor是Pytest的一個外掛(比較舊的一個外掛)
# allure-pytest 比較新一點,建議使用
pip3 install pytest-allure-adaptor
pip3 instal allure-pytest

# 安裝Allure工具,主要是講pytest的測試資料轉換成HTML資料
# linux環境安裝
# 現將allure源新增到linux的源裡
sudo apt-add-repository ppa:qameta/allure # 更新本地源 sudo apt-get update # 安裝allure,[allure無法使用的解決方案](https://askubuntu.com/questions/1168821/allure-report-installed-but-not-findable) sudo apt-get install allure # 上面的方法不行的話,用下面的方法 curl -o allure-2.6.0.tgz -Ls https://dl.bintray.com/qameta/generic/io/qameta/allure/allure/2.6.0/allure-2.6.0.tgz sudo tar -zxvf allure-2.6.0.tgz -C /opt/ sudo ln -s
/opt/allure-2.6.0/bin/allure /usr/bin/allure allure --version # Windows 下安裝就麻煩點,可以使用 Scoop 工具(Chocolatey工具不知道為什麼安裝不了),不管了官方推薦使用 Scoop 安裝就使用 Scoop 安裝得了 # 先安裝[Scoop](https://juejin.im/entry/5def7a2ff265da33f2164048/detail) # 檢查sccop是否安裝成功 scoop --version # 安裝 allure scoop install allure # 檢視allure是否安裝成功 allure --version 複製程式碼

二、Pytest整合Allure

   Allure要生效需要在測試檔案和測試通配檔案(conftest.py)中配置 allure。

1. allure的特性

Aullre的幾個特性:

@allure.feature # 用於定義被測試的功能,被測產品的需求點
@allure.story # 用於定義被測功能的使用者場景,即子功能點
with allure.step # 用於將一個測試用例,分成幾個步驟在報告中輸出
allure.attach # 用於向測試報告中輸入一些附加的資訊,通常是一些測試資料資訊
@pytest.allure.step # 用於將一些通用的函式作為測試步驟輸出到報告,呼叫此函式的地方會向報告中輸出步驟
複製程式碼

2. pytest整合allure

測試檔案示例,生成測試資料,進一步生成 allure 測試報告

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@File    :   test_allure_shopping.py
@Time    :   2019/12/1017:34
@Author  :   Crisimple
@Github :    https://crisimple.github.io/
@Contact :   [email protected]
@License :   (C)Copyright 2017-2019,Micro-Circle
@Desc    :   None
"""

import pytest
import allure


# allure.feature 定義功能
@allure.feature("報告購物車")
class TestAllure(object):
    # 定義使用者場景
    @allure.story("加入購物車")
    def test_add_goods_cart(self):
        # 呼叫步驟函式
        login("crisimple","123456")
        
        # 將測試用例分成幾個步驟,將測試步驟列印到測試報告中,步驟二
        with allure.step("瀏覽商品"):
            # allure.attach--列印一些附加資訊
            allure.attach("商品1","C")
            allure.attach("商品2","C")
            
        # 步驟三
        with allure.step("加入商品"):
            allure.attach("商品1",2)
            allure.attach("商品2",3)
            
        # 步驟四
        with allure.step("校驗商品"):
            allure.attach("商品1加入成功","共2個")
            allure.attach("商品2加入失敗","共0個")
            
    @allure.story("繼續購物")
    def test_continue_shopping_cart(self):
        login("crisimple","123456")
        allure.attach("商品3",4)
        print("繼續購物成功")
        
    @allure.story("減少商品失敗")
    def test_edit_shopping_cart(self):
        login("crisimple","123")
        assert 0
        
    @pytest.mark.skip(reason="刪除購物車不執行")
    @allure.story("刪除購物車")
    def test_delete_shopping_cart(self):
        login("crisimple","123")
        print()
        
    
# 將函式作為一個步驟,呼叫此函式時,報告中輸出一個步驟,步驟名稱通常時函式名,這樣的函式通常稱為步驟函式
@allure.step("使用者登入")
def login(user,passwd):
    if user == "crisimple" and passwd == "123456":
        print(user,passwd)
        print("登入成功")
    else:
        print(user,passwd)
        print("登入失敗,請重新嘗試")

複製程式碼

三、Allure生成測試報告

1. pytest生成測試報告

# 執行全部的測試用例
pytest ./Allure/test_allure_shoping.py --alluredir ./Allure/result/

# 執行指定features或者stories執行一部分測試用例,比如執行‘報告購物車’下的‘加入購物車’子功能的測試用例
pytest ./Allure/test_allure_shopping.py --allure_features="報告購物車" --allure_stories="加入購物車" ../Allure/part_result/
複製程式碼

測試報告

2. Allure生成測試報告

# 生成測試報告
allure generate ./Alluer/result/ -o ./Allure/report/ --clean

# 開啟測試報告
allure open -h 127.0.0.1 -p 8083 ./Allure/report/
複製程式碼

Allure生成測試報告

開啟測試報告,牛皮的是可以切換中文版本

開啟測試報告

Overview(概覽)

Categories(類別)

Behavior(功能)

Suites(測試套件)

Graphs(圖示)

Timeline(時間刻度)

Packages(測試包)
複製程式碼

四、Allure與Jenkins結合

  對於成規模的測試團隊會把自動化測試部署整合到Jenkins中,構建成自動化部署。

4.1 Jenkins配置Allure

安裝Allure外掛

路徑1

路徑2

4.2 建立job

配置路徑必須配置一致


source env/bin/activate
echo "**************Welcome to env**************"

echo "**************pytest create test data**************"
pytest /完整路徑/Allure/test_allure_shopping.py --alluredir ${WORKSPACE}/allure-results/
echo "**************report has generated done**************"

複製程式碼

配置指令碼

配置好了的頁面

4.3 執行工程

立即構建工程即可。