Pytest系列(20)- allure結合pytest,allure.step()、allure.attach的詳細使用

若是你還想從頭學起Pytest,能夠看看這個系列的文章哦!html

https://www.cnblogs.com/poloyy/category/1690628.htmlpython

 

前言

allure除了支持pytest自帶的特性以外(fixture、parametrize、xfail、skip),本身自己也有強大的特性能夠在pytest中使用函數

 

@allure.step 

  • allure報告最重要的一點是,它容許對每一個測試用例進行很是詳細的步驟說明
  • 經過 @allure.step() 裝飾器,可讓測試用例在allure報告中顯示更詳細的測試過程

 

示例代碼

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
__title__  =
__Time__   = 2020-04-08 21:24
__Author__ = 小菠蘿測試筆記
__Blog__   = https://www.cnblogs.com/poloyy/
"""
import allure


@allure.step("第一步")
def passing_step():
    pass


@allure.step("第二步")
def step_with_nested_steps():
    nested_step()


@allure.step("第三步")
def nested_step():
    nested_step_with_arguments(1, 'abc')


@allure.step("第四步{0},{arg2}")
def nested_step_with_arguments(arg1, arg2):
    pass


@allure.step("第五步")
def test_with_nested_steps():
    passing_step()
    step_with_nested_steps()

 

測試用例在allure上的顯示

知識點

  •  step() 只有一個參數,就是title,你傳什麼,在allure上就顯示什麼
  • 能夠像python字符串同樣,支持位置參數和關鍵字參數 {0},{arg2},可看第四步那裏,若是函數的參數沒有匹配成功就會報錯哦
  •  step() 的使用場景,給我感受就是,當方法之間嵌套會比較有用,不然的話只會顯示一個步驟,相似下面圖

 

allure.attach(挺有用的)

做用:allure報告還支持顯示許多不一樣類型的附件,能夠補充測試結果;本身想輸出啥就輸出啥,挺好的測試

語法: allure.attach(body, name, attachment_type, extension) spa

參數列表

  • body:要顯示的內容(附件)
  • name:附件名字
  • attachment_type:附件類型,是 allure.attachment_type 裏面的其中一種
  • extension:附件的擴展名(比較少用)

 

allure.attachment_type提供了哪些附件類型?

 

語法二: allure.attach.file(source, name, attachment_type, extension) 

source:文件路徑,至關於傳一個文件code

其餘參數和上面的一致htm

 

其中一個測試用例的代碼栗子

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
__title__  =
__Time__   = 2020-04-08 21:24
__Author__ = 小菠蘿測試筆記
__Blog__   = https://www.cnblogs.com/poloyy/
"""
import allure
import pytest


@pytest.fixture
def attach_file_in_module_scope_fixture_with_finalizer(request):
    allure.attach('在fixture前置操做裏面添加一個附件txt', 'fixture前置附件', allure.attachment_type.TEXT)

    def finalizer_module_scope_fixture():
        allure.attach('在fixture後置操做裏面添加一個附件txt', 'fixture後置附件',
                      allure.attachment_type.TEXT)

    request.addfinalizer(finalizer_module_scope_fixture)


def test_with_attacments_in_fixture_and_finalizer(attach_file_in_module_scope_fixture_with_finalizer):
    pass


def test_multiple_attachments():
    allure.attach('<head></head><body> 一個HTML頁面 </body>', 'Attach with HTML type', allure.attachment_type.HTML)
    allure.attach.file('./reports.html', attachment_type=allure.attachment_type.HTML)

 

運行以後看結果

這是一個txt附件blog

 

 

這是一個用了 allure.attach() 來插入一段本身寫的HTML和 allure.attach.file() 來導入一個已存在的HTML文件(pytest-html報告)ip

相關文章
相關標籤/搜索