使用pytest-allure-adapter定制Allure Report

时间:2016-02-08 07:28:05

标签: python-2.7 pytest allure

我想使用pytest adaptor自定义我的诱惑测试报告。例如,在概述页面上添加环境详细信息。在“概述”屏幕上更改“报告名称”。

我尝试按照文档中的建议添加conftest.py中的环境详细信息,但它对我不起作用

def pytest_configure(config):
    allure.environment(test_server='testserver', report='My Test Report')

我还尝试在allure-report文件夹中添加environment.properties,但这也无效。 如果我在这里做错了,请告诉我,如何解决这个问题。

4 个答案:

答案 0 :(得分:1)

迟到总比没有好, 如文档中所述,pytest_configure是

  

在解析命令行选项后调用所有插件和   已加载初始conftest文件。

每个插件都有自己的pytest_configure方法,这里发生的是你的pytest_configure你conftest.py在allure_configure之前被调用。

一个简单的解决方法是通过添加 @ pytest.hookimpl(trylast = True)作为标题,让你的pytest_configure尽可能晚地执行(最好是最后一个)。

@pytest.hookimpl(trylast=True)
def pytest_configure(config):
    allure.environment(test_server='testserver', report='My Test Report')

答案 1 :(得分:1)

您可以这样设置诱人的测试环境数据:

def pytest_sessionfinish(session, exitstatus):

    session.config.allure.environment(test_server='testserver', report='My Test Report')

旧的pytest插件已弃用,新的​​pytest插件与旧的插件不兼容。

如果要添加环境属性,则必须创建environment.properties文件并将其放置在alluredir文件夹中。

def pytest_sessionfinish(session, exitstatus):
    report_dir = session.config.option.allure_report_dir # Gets the --alluredir directory path
    env_details = """a:b
                 c:d
              """

    if report_dir:
        with open('{}/{}'.format(report_dir, 'environment.properties'), 'w') as allure_env:
            allure_env.write({}.format(env_details))

此代码将创建environment.properties文件并将其放在诱人的结果目录中。当您使用allure-cli为该目录提供服务时,您将看到环境详细信息。

答案 2 :(得分:0)

我从未尝试过pytest适配器。但无论适配器是什么,您都可以使用相同的工具将XML报告转换为HTML。所以environment.properties应该工作。您可以使用https://github.com/allure-examples/allure-testng-example

进行测试
  1. mvn test
  2. 创建target / allure-results / environment.properties“testserver =我的测试报告”
  3. mvn site
  4. 在FireFox中打开target / site / allure-maven-plugin / index.html enter image description here
  5. 如果没有,请在HTML报告中检查Allure版本。 enter image description here

答案 3 :(得分:0)

正如我在代码实现中发现的allure设置环境变量尚未在Python框架中实现。 allure.py模块。

from allure_commons._allure import label
from allure_commons._allure import severity
from allure_commons._allure import tag
from allure_commons._allure import epic, feature, story
from allure_commons._allure import link
from allure_commons._allure import issue, testcase
from allure_commons._allure import Dynamic as dynamic
from allure_commons._allure import step
from allure_commons._allure import attach
from allure_commons.types import Severity as severity_level
from allure_commons.types import AttachmentType as attachment_type


__all__ = [
    'label',
    'severity',
    'tag',
    'epic'
    'feature',
    'story',

    'link',
    'issue',
    'testcase',

    'step'

    'dynamic'

    'severity_level',

    'attach',
    'attachment_type'
]

Allure的开发者已经意识到这一点并正在努力。 您可以看到相应的bug