在 allure-pytest 中获取动态测试描述

Get dynamic test description in allure-pytest

在 pytest-allure 中有没有办法在我用

设置后获取当前测试描述
allure.dynamic.description("""blah blah""")

寻找类似的东西:

description = pytest.xxx or request.node.xxx ....

我正在尝试更好地解释我的需要。每个测试在关闭前调用一个函数,它需要知道 testdescription 的值。我不想将它保存在变量中并传递给函数。我会通过 allure 变量得到它。

@allure.title("MYTITLE")
def test_A1(self):
    allure.dynamic.description("""MYDESC""")
    ...
    myfunct()


def myfunct():
    testdescription = ???
    ...
    message: "Test done " + testdescription  
    smtpObj.sendmail(sender, receivers, message)      

查看 allure_pytest 插件源,您可以从存储信息的插件管理器中获取正确的插件对象:

import allure
from allure_commons._core import plugin_manager
from allure_pytest.listener import AllureListener


@allure.title("MYTITLE")
def test_A1(request):
    allure.dynamic.description("""MYDESC""")
    myfunct()


def myfunct():
    plugin = next(p for p in plugin_manager.get_plugins() if isinstance(p, AllureListener))
    testdescription = plugin.allure_logger.get_test(None).description
    ...

但是,请注意 API 不是 public(而且它看起来并不打算成为 public),因此请注意 [= 实现中的变化12=] 很容易破坏 myfunct.