自定义截图装饰器与pytest-conftest同时使用遇到的问题

在使用pytest进行UI自动化测试时,将driver和case_data置于conftest中,通过装饰器实现测试用例执行后的截图功能。然而运行时发现conftest的参数无法正确传递,经研究需在装饰器中加入@wraps(func)。进一步调整,由于装饰器无法直接访问driver参数,解决方案是将driver赋值给self.driver,从而在装饰器内部通过obj访问,最终问题得以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景/原因

使用pytest做UI自动化,driver和case_data写在了conftest中,测用例直接调用
另外写了一个装饰器,在测试用例运行完成后/报错后截图

代码如下

测试用例代码如下

from common.step_method import StepMethod
from common.public import  *

class TestCases():

    @get_screen_in_case_end_or_error
    def test_001(self,driver,case_data):
        '''
        根据传进来的参数,执行测试用例
        :param driver: 浏览器驱动
        :param case_data: 测试用例数据
        :return:
        '''
        allure.dynamic.feature(case_data["feature"])
        allure.dynamic.story(case_data["story"])
        allure.dynamic.title(case_data["case_name"])
        step_method=StepMethod(driver=driver)
        for step in case_data["case_steps"]:
            with allure.step(step["case_step"]):
                if hasattr(step_method, step["method"]):
                    func=getattr(step_method, step["method"])
                    func(**step)
                else:
                    raise Exception(f'传入的方法:{
     step["method"]}不正确,请检查')

装饰器代码如下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值