pyetst中@allure.epic中的数据怎么参数化
时间: 2024-09-11 18:16:12 浏览: 48
在Allure测试框架的Pytest插件中,`@allure.epic`是一个装饰器,用于标记测试集属于某个特定的史诗级别(Epic)。如果你想要对这个史诗级别的数据进行参数化,通常你需要配合Allure提供的动态标签或者使用pytest的内置参数化功能。
Allure本身并没有直接支持在`@allure.epic`上进行参数化,因为这通常是用来描述测试集的上下文,而不是作为运行时的数据输入。但是你可以这样做:
1. **通过标签(Labels)**: 在每个测试用例前添加一个自定义的标签,例如`@allure.epic('参数化史诗名-{epic_param}')`,然后在报告中解析这些标签来获取参数化的值。
2. **使用pytest.mark.parametrize**: 在py.test中,你可以先创建一个参数化的函数,然后在其上应用`@allure.epic`。在参数化函数内部,根据传入的参数设置测试的史诗名称。
例如:
```python
@pytest.mark.parametrize("epic_name", ["史诗1", "史诗2"])
@allure.epic(epic_name)
def test_case(epic_name):
# 测试代码
```
在这种情况下,`epic_name`就是你想要参数化的变量。
相关问题
import os import allure from page_home.login import loginPage from page_home.new_project import NewprojectPage from util.yaml_util import read_yaml from util.path_util import path import pytest # @allure.parent_suite("自建系统测试") @allure.suite("流程模块测试") @allure.sub_suite('创建用例') @allure.epic('erp系统') @allure.feature('流程测试') @allure.story('项目总监创建项目功能') class Test_ceshi: @allure.description('技术总监登录登录') @pytest.mark.parametrize("data", read_yaml(path("data/new_project.yml"))) @pytest.fixture() def Test_login(self, data, browser): print("登录测试") allure.dynamic.title(data['title']) driver = loginPage(browser) driver.login(data["name"], data["pwd"]) @allure.description('创建项目') @pytest.mark.parametrize('data', read_yaml(path('data/new_project.yml'))) @pytest.mark.usefixtures('Test_login') def Test_newproject(self,data, browser): print('测试创建项目') allure.dynamic.title(data['title']) driver = NewprojectPage(browser) driver.new_project(data['pjname'], data['pjdescribe'])
这段代码是一个测试用例,主要测试流程模块下的创建项目功能。其中使用了pytest框架和allure报告插件。在测试类Test_ceshi中,有两个测试方法:Test_login和Test_newproject。Test_login用于登录操作,通过参数化读取测试数据,使用fixture装饰器进行前置操作。Test_newproject用于创建项目操作,同样通过参数化读取测试数据,在执行之前需要先执行Test_login方法进行登录操作。
pytest中@allure.epic("电力行业人工智能创新平台")怎么参数化
在pytest中,`@allure.epic`是一个装饰器,用于标记测试集或测试函数属于某个Allure故事板(Epic)。它通常用于组织和分组相关的测试,特别是当项目涉及多个大型功能或模块时。然而,`allure.epic`本身并不支持直接的参数化,因为它不是一个动态生成测试的工具。
如果你想让`epic`标签随某些参数变化,这通常是通过Python的元编程或者是自定义报告钩子(custom reporting hooks)来实现的,而不是在pytest本身的test运行过程中参数化。例如,你可以创建一个工厂函数,根据输入的数据动态设置`@allure.epic`的值:
```python
def create_test_case(epic_name, test_data):
@allure.epic(epic_name)
def test_function(data):
# 测试代码...
assert data == expected_value
return test_function(test_data)
# 调用时传入不同epic名称和数据
test_case_1 = create_test_case("电力行业人工智能创新平台", "特定案例1")
test_case_2 = create_test_case("电力行业智能分析", "特定案例2")
# 运行测试
test_case_1(some_data)
test_case_2(another_data)
```
在这种情况下,每个被创建的测试函数都会关联到对应的Epic标签。
阅读全文