pytest @allure
时间: 2023-09-14 12:13:02 浏览: 118
pytest @allure 是一个 pytest 插件,用于生成 Allure 报告。通过使用 @allure.step() 装饰器,可以为每个测试用例添加详细的步骤说明。该装饰器在测试用例的每个步骤之前都会被调用,可以用来描述每个步骤的目的和操作。
在使用 @allure.step() 装饰器时,可以传入一个参数,即结果图中 TestBody 中所显示的内容。这个参数可以是位置参数或关键字参数。如果函数的参数没有匹配成功,将会报错。
除了 @allure.step() 装饰器,还有其他一些 pytest 插件相关的内容,如 pytest.ini 配置文件、跳过用例、用例执行顺序、夹具等。此外,还有 Fixture 固件、contest.py、断言以及 Allure 报告生成等内容。
在使用 Allure 进行报告定制时,有两种语法可以使用。语法一是通过 allure.attach() 函数来添加附件,可以传入 body、name、attachment_type 和 extension 参数。语法二是通过 allure.attach.file() 函数来添加文件附件,需要传入 source、name、attachment_type 和 extension 参数。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
相关问题
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标签。
阅读全文