如果你還想從頭學起Pytest,可以看看這個系列的文章哦!
https://www.cnblogs.com/poloyy/category/1690628.html
前言
前面介紹了兩種allure的特性
- @allure.step() 裝飾器:可以設定測試步驟,讓測試用例的執行過程更加詳細
- allure.attach() 函式:可以設定需要顯示在allure報告的附件,包含了多種型別,可以通過allure.attachment_type檢視支援的型別
這一篇幅,我們主要來講解另外兩個特性,可以增加報告的可讀性哦!
- @allure.description()
- @allure.title()
它們用法極其相近,只是作用不一樣而已
@allure.description()
作用
可以新增足夠詳細的測試用例描述,以便於管理層檢視哦哈哈哈
語法格式,有三種
- @allure.description(str)
- 在測試用例函式宣告下方新增""" """
- @allure.description_html(str):相當於傳一個HTML程式碼組成的字串,類似allure.attach()中傳HTML
注意:方式一方式二的效果和作用是一致的, 哪個方便哪個來
#!/usr/bin/env python # -*- coding: utf-8 -*- """ __title__ = __Time__ = 2020-04-18 15:24 __Author__ = 小菠蘿測試筆記 __Blog__ = https://www.cnblogs.com/poloyy/ """ import allure import allure # 方式一 @allure.description(""" 這是一個@allure.description裝飾器 沒有特別的用處 """) def test_description_from_decorator(): assert 42 == int(6 * 7) # 方式二 def test_unicode_in_docstring_description(): """ 當然,在方法宣告的下一行這樣子寫,也算一種新增description的方式哦 """ assert 42 == int(6 * 7) # 方式三 @allure.description_html(""" <h1>Test with some complicated html description</h1> <table style="width:100%"> <tr> <th>Firstname</th> <th>Lastname</th> </tr> <tr align="center"> <td>William</td> <td>Smith</td> </table> """) def test_html_description(): assert True
執行結果
方式一的allure報告
方式二的allure報告
方式三的allure報告
@allure.title()
作用
- 使得測試用例的標題更具有可讀性,畢竟我們可以寫成中文
- 支援佔位符傳遞關鍵字引數哦
具體栗子一
#!/usr/bin/env python # -*- coding: utf-8 -*- """ __title__ = __Time__ = 2020-04-18 16:09 __Author__ = 小菠蘿測試筆記 __Blog__ = https://www.cnblogs.com/poloyy/ """ import pytest, allure @allure.title("前置操作:登入") @pytest.fixture def test_loginss(request): params = request.param name = params["username"] pwd = params["pwd"] allure.attach(f"這是測試用例傳的引數{params}") print(name, pwd, params) yield name, pwd @allure.title("成功登入,測試資料是:{test_loginss}") @pytest.mark.parametrize("test_loginss", [ {"username": "name1", "pwd": "pwd1"}, {"username": "name2", "pwd": "pwd2"}], indirect=True) def test_success_login(test_loginss): name, pwd = test_loginss allure.attach(f"賬號{name},密碼{pwd}")
執行結果,檢視allure報告
這是一次綜合多個之前學到的方法來完成的栗子,已經具體標出來啦!
具體栗子二
@allure.title("多個引數{name},{phone},{age}") @pytest.mark.parametrize("name,phone,age", [ (1, 2, 3), (4, 5, 6), (7, 8, 9) ]) def test_test_test(name, phone, age): print(name, phone, age)
執行結果,檢視allure報告
總結
如果沒有新增 @allure.title() 的話,測試用例的標題預設就是函式名,這樣的可讀性不高,畢竟我們們是中國人,顯示中文title還是很有必要的~所以牆裂建議大夥兒加上啦!