在 Allure Reports 中,我如何制作 links 的名称和 link by python
In Allure Reports how can i made links with name and link by python
我想用名称创建 links,并为项目创建 links。
报告中的示例我有 link 名称 - 任务 55188,此 link 将我重定向到 'http://tfs.com/tfs/company/rnd/QA/_testManagement?planId=41890&suiteId=55188&_a=tests'
但是我如何在 python 代码中创建它?
您可以在项目中创建 allure_wrapper.py 文件,并使用带有任务 number/task 标题的装饰器进行测试。
例如:
在您的项目中,您有一个任务列表:
constants.py
TASKS = {
'55188': 'Test task'
}
导入此列表并在 allure_wrapper.py 中用于任务装饰器
allure_wrapper.py
from constants import TASKS
from allure import link, issue, story
# Specify your link pattern
TFS_LINK_PATTERN = 'http://tfs.com/tfs/company/rnd/QA/_testManagement?planId=41890&suiteId={}&_a=tests'
def task_link(task_id):
return link(TFS_LINK_PATTERN.format(task_id), name=f'{item_type} {task_id}')
def task_links(links):
decos = []
for link in links:
decos.append(task_link(link))
decos.append(story(TASKS[link]))
return compose_decos(decos)
def compose_decos(decos):
def composition(func):
for deco in reversed(decos):
func = deco(func)
return func
return composition
使用创建的装饰器附加link:
from allure_wrapper import task_links
@task_links(['55188'])
def test_task_link():
# do smth
因此,可点击的 link 将在您的魅力报告中可用
我为此做了一个解决方法:
allure.attach('<head></head><body><a href="' + your_link + '">Link to ...</a></body>', 'Logs', allure.attachment_type.HTML)
有装饰器
一些 allure-python 集成允许使用 cmd 行开关设置 link 模式。例如:
魅力测试:
--allure-link-pattern=http://tfs.com/tfs/company/rnd/QA/_testManagement?planId=41890&suiteId={}&_a=tests
魅力表现:
-D AllureFormatter.link_pattern=http://tfs.com/tfs/company/rnd/QA/_testManagement?planId=41890&suiteId={}&_a=tests
设置 link 模式时,无需像 Viktoriia 的回答那样创建自己的 allure_wrapper.py
,可以直接使用 @allure.link:55188
。
动态
除了上述装饰器方法之外,Dynamic
class 可用于在运行时动态添加 link 到报表。例如:
import allure
def some_test_function():
allure.dynamic.link('http://tfs.com/tfs/company/rnd/QA/_testManagement?planId=41890&suiteId=55188&_a=tests', name='55188')
某些集成可能不支持动态 linking,并且在调用 allure.dynamic.link
时将不执行任何操作。例如,我必须通过 implementing the relevant allure hooks in a PR.
添加对 allure-behave 的支持
我们使用动态 linking 有条件地为失败的测试添加 Jira 缺陷 link。当测试失败时,我们会创建一个带有特定于测试的标签的 Jira 缺陷。下一次测试失败时,它会查询 Jira REST API 以查找与标签匹配的所有问题并 link 发送它们。这样我们就可以 add/remove 测试来自 Jira 的 links 并且避免在测试代码中摸索装饰器。
我想用名称创建 links,并为项目创建 links。
报告中的示例我有 link 名称 - 任务 55188,此 link 将我重定向到 'http://tfs.com/tfs/company/rnd/QA/_testManagement?planId=41890&suiteId=55188&_a=tests'
但是我如何在 python 代码中创建它?
您可以在项目中创建 allure_wrapper.py 文件,并使用带有任务 number/task 标题的装饰器进行测试。
例如:
在您的项目中,您有一个任务列表:
constants.py
TASKS = {
'55188': 'Test task'
}
导入此列表并在 allure_wrapper.py 中用于任务装饰器
allure_wrapper.py
from constants import TASKS
from allure import link, issue, story
# Specify your link pattern
TFS_LINK_PATTERN = 'http://tfs.com/tfs/company/rnd/QA/_testManagement?planId=41890&suiteId={}&_a=tests'
def task_link(task_id):
return link(TFS_LINK_PATTERN.format(task_id), name=f'{item_type} {task_id}')
def task_links(links):
decos = []
for link in links:
decos.append(task_link(link))
decos.append(story(TASKS[link]))
return compose_decos(decos)
def compose_decos(decos):
def composition(func):
for deco in reversed(decos):
func = deco(func)
return func
return composition
使用创建的装饰器附加link:
from allure_wrapper import task_links
@task_links(['55188'])
def test_task_link():
# do smth
因此,可点击的 link 将在您的魅力报告中可用
我为此做了一个解决方法:
allure.attach('<head></head><body><a href="' + your_link + '">Link to ...</a></body>', 'Logs', allure.attachment_type.HTML)
有装饰器
一些 allure-python 集成允许使用 cmd 行开关设置 link 模式。例如:
魅力测试:
--allure-link-pattern=http://tfs.com/tfs/company/rnd/QA/_testManagement?planId=41890&suiteId={}&_a=tests
魅力表现:
-D AllureFormatter.link_pattern=http://tfs.com/tfs/company/rnd/QA/_testManagement?planId=41890&suiteId={}&_a=tests
设置 link 模式时,无需像 Viktoriia 的回答那样创建自己的 allure_wrapper.py
,可以直接使用 @allure.link:55188
。
动态
除了上述装饰器方法之外,Dynamic
class 可用于在运行时动态添加 link 到报表。例如:
import allure
def some_test_function():
allure.dynamic.link('http://tfs.com/tfs/company/rnd/QA/_testManagement?planId=41890&suiteId=55188&_a=tests', name='55188')
某些集成可能不支持动态 linking,并且在调用 allure.dynamic.link
时将不执行任何操作。例如,我必须通过 implementing the relevant allure hooks in a PR.
我们使用动态 linking 有条件地为失败的测试添加 Jira 缺陷 link。当测试失败时,我们会创建一个带有特定于测试的标签的 Jira 缺陷。下一次测试失败时,它会查询 Jira REST API 以查找与标签匹配的所有问题并 link 发送它们。这样我们就可以 add/remove 测试来自 Jira 的 links 并且避免在测试代码中摸索装饰器。