八、allure2报告中添加用例支持tags标签

# -*- 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级别终结器