觉得有帮助的小伙伴可以点个赞!分享给更多人!
目录标题
- Allure的装饰器解释
- 调试的示例代码
- allure.dynamic的用法--动态修改报告的属性值
- allure方法
Allure的装饰器解释
前置条件
allure-pytest==2.9.45
allure-python-commons==2.9.45
@allure.parent_suite,@allure.suite,@allure.sub_suite
@allure.parent_suite,@allure.suite,@allure.sub_suite对应的是
allure报告中的测试套的三个级别.爷爷父亲儿子.然后下一级就是测用例的标题.
@allure.epic, @allure.feature, @allure.story,@allure.title
@allure.epic, @allure.feature, @allure.story,@allure.title对应
功能中的一级菜单,二级菜单,三级菜单,用例标题
@allure.id,@allure.link,@allure.label,@allure.issue,@allure.description,@allure.severity,@allure.tag,@allure.testcase,@allure.description_html
@allure.id 用例id,@allure.link 用例的超链接,@allure.label 用例的标签
@allure.issue 记录用例的问题(超链接),@allure.description 用例的描述
@allure.severity 用例的优先级,@allure.tag 用例的标记,@allure.testcase 记录用例的地址(超链接)
@allure.description_html 用例的描述的网址(超链接),若存在description_html则@allure.description不显示
@allure.description_html不存在时
@allure.severity的参数说明
优先级的参数,也可以直接用后面的字符
class Severity(str, Enum):
BLOCKER = 'blocker'
CRITICAL = 'critical'
NORMAL = 'normal'
MINOR = 'minor'
TRIVIAL = 'trivial'
@allure.link的参数说明
class LinkType(object):
LINK = 'link'
ISSUE = 'issue'
TEST_CASE = 'test_case'
可以看到有三种link类型,link也可以是 issue
调试的示例代码
import allure
import pytest
from allure_commons.types import LinkType, Severity
@allure.parent_suite('我是parent_suite')
@allure.suite('我是suite')
@allure.sub_suite('我是sub_suite')
@allure.epic('我是epic')
@allure.feature('我是feature')
@allure.story('我是story')
class TestAllureDemo:
@allure.id('我是id')
@allure.title('我是title')
@allure.link('https://www.baidu.com/', LinkType.ISSUE, '我是link_ISSUE')
@allure.label('我是label')
@allure.issue('https://www.baidu.com/', '我是issue')
@allure.description('我是description')
@allure.severity(Severity.BLOCKER)
@allure.tag('我是tag')
@allure.testcase('https://www.baidu.com/', 'testcase')
def test_01(self):
self.assert_one(1, 1)
@allure.step('我是断言')
def assert_one(self, a, b):
assert a == b
@allure.id('我是id')
@allure.title('我是title')
@allure.link('https://www.baidu.com/', LinkType.LINK, '我是link')
@allure.label('我是label')
@allure.issue('https://www.baidu.com/', '我是issue')
@allure.description('我是description')
@allure.severity('我是severity')
@allure.tag('我是tag')
@allure.testcase('https://www.baidu.com/', '我是testcase')
def test_02(self):
allure.dynamic.mro()
allure.dynamic.title('我是修改后的title')
allure.dynamic.link('https://www.baidu.com/', LinkType.LINK, '我是修改后的link')
allure.dynamic.label('我是修改后的label')
allure.dynamic.issue('https://www.baidu.com/', '我是修改后的issue')
allure.dynamic.description('我是修改后的description')
allure.dynamic.severity('我是修改后的severity')
allure.dynamic.tag('我是修改后的tag')
allure.dynamic.testcase('https://www.baidu.com/', '我是修改后的testcase')
assert 1 > 1
allure.dynamic的用法–动态修改报告的属性值
allure.dynamic主要是用于动态的修改用例在报告中的一些参数,下面列举了所有的可改的参数
@allure.id('我是id')
@allure.title('我是title')
@allure.link('https://www.baidu.com/', LinkType.LINK, '我是link')
@allure.label('我是label')
@allure.issue('https://www.baidu.com/', '我是issue')
@allure.description('我是description')
@allure.severity('我是severity')
@allure.tag('我是tag')
@allure.testcase('https://www.baidu.com/', '我是testcase')
def test_02(self):
allure.dynamic.mro()
allure.dynamic.title('我是修改后的title')
allure.dynamic.link('https://www.baidu.com/', LinkType.LINK, '我是修改后的link')
allure.dynamic.label('我是修改后的label')
allure.dynamic.issue('https://www.baidu.com/', '我是修改后的issue')
allure.dynamic.description('我是修改后的description')
allure.dynamic.severity('我是修改后的severity')
allure.dynamic.tag('我是修改后的tag')
allure.dynamic.testcase('https://www.baidu.com/', '我是修改后的testcase')
assert 1 > 1
示例
allure方法
allure.attach.flie 上传文件
def allure_attach_file(file_path):
info = '上传文件&'
# 文件路径,文件名
allure.attach.file(file_path, f"{info}{os.path.basename(file_path)}")
allure.attach 上传文本/附件
def allure_attach_text(body, name):
# 文本内容,文本名
allure.attach(body, name)
例如 allure_attach_body(“我是测试文本”, “测试文本111”)
allure.attach(json, 'Json数据', allure.attachment_type.JSON)
可以指定文本类型allure.attachment_type.JSON,获取指定类型的格式(美化效果).
官方的一些支持的文本类型
class AttachmentType(Enum):
def __init__(self, mime_type, extension):
self.mime_type = mime_type
self.extension = extension
TEXT = ("text/plain", "txt")
CSV = ("text/csv", "csv")
TSV = ("text/tab-separated-values", "tsv")
URI_LIST = ("text/uri-list", "uri")
HTML = ("text/html", "html")
XML = ("application/xml", "xml")
JSON = ("application/json", "json")
YAML = ("application/yaml", "yaml")
PCAP = ("application/vnd.tcpdump.pcap", "pcap")
PNG = ("image/png", "png")
JPG = ("image/jpg", "jpg")
SVG = ("image/svg-xml", "svg")
GIF = ("image/gif", "gif")
BMP = ("image/bmp", "bmp")
TIFF = ("image/tiff", "tiff")
MP4 = ("video/mp4", "mp4")
OGG = ("video/ogg", "ogg")
WEBM = ("video/webm", "webm")
PDF = ("application/pdf", "pdf")