# -*- coding: utf-8 -*-
# @Time : 2023/7/10 16:06
# @Author : yanfa
# @user : yanfa
# @File : test_allure_07_for_add_tags.py
# @remark: allure2 报告中添加用例支持tags标签
""""""
import pytest
"""一、应用场景
allure报告支持一些场景的pytest特性,包括xfail、skipif、fixture等
测试结果会展示特定标识在用例详情页面
二、添加用例标签-xfail、skipif
使用装饰器:
@pytest.xfail()
@pytest.skipif()
"""
# 例子1
# 当用例通过时标注为XFAIL
@pytest.mark.xfail(condition=lambda: True, reason='这是一个预期失败用例')
def test_with_expected_failure():
assert False
#
# # 当用例通过时标注为XPASS
@pytest.mark.xfail
def test_with_unexpected_pass():
assert True
#
# # 跳过用例标注为SKIPPED
@pytest.mark.skipif(condition='2+2!=5', reason="当条件触发时跳过")
def test_with_skip_if():
pass
"""三、添加用例标签-fixture
应用场景:
fixture和finalizer是分别在测试开始之前和测试结束之后有pytest调用的实用程序函数
allure跟踪每个fixture的调用,并详细显示调用啦哪些方法以及哪些参数,从而保持啦调用的正确顺序。
"""
# 例子2
# @pytest.fixture()
# def func1():
# print("这是fixture func1前置动作")
# yield
# print("这是fixture func1后置动作")
@pytest.fixture()
def func(request):
# 前置动作-相当于setup
print("这是一个fixture方法")
# 后置动作-相当于teardown
# 定义一个终结器,teardown动作放在终结器中
def over():
print("session级别终结器")
# 添加终结器,执行完测试用例之后会执行终结器中的内容
request.addfinalizer(over)
class TestClass:
def test_with_scoped_finalizers(self, func):
print("测试用例")
# 没加func1时输出
# 这是一个fixture方法
# 测试用例 PASSED
# session级别终结器
# 加func1输出
# 这是一个fixture方法
# 这是fixture func1前置动作
# 测试用例 PASSED
# 这是fixture func1后置动作
# session级别终结器