51Testing软件测试论坛

标题: pytest 中 @pytest.mark.parametrize 和自定义装饰器结合使用的时候为什么参数一定... [打印本页]

作者: 测试积点老人    时间: 2021-4-8 13:15
标题: pytest 中 @pytest.mark.parametrize 和自定义装饰器结合使用的时候为什么参数一定...
可变参数的形式会报错
  1. def addlog(func):
  2.     def wrapper(self,*args,**kwargs):
  3.         print('装饰器开始')
  4.         func(self,*args,**kwargs)
  5.         print(args,kwargs)
  6.         print('装饰器结束')
  7.     return wrapper

  8. class TestObj:
  9.     data=[['aaa',11],['bbb',22]]
  10.     @user1ize("name,age",data)
  11.     @addlog
  12.     def test_A(self,name,age):
  13.         print('开始用例',name,age)
复制代码
[attach]132426[/attach]
换成不可变参数是可以正常运行的
  1. def addlog(func):
  2.     def wrapper(self,name,age):
  3.         print('装饰器开始')
  4.         func(self,name,age)
  5.         print(name,age)
  6.         print('装饰器结束')
  7.     return wrapper


  8. class TestObj:
  9.     data=[['aaa',11],['bbb',22]]
  10.     @user3ize("name,age",data)
  11.     @addlog
  12.     def test_A(self,name,age):
  13.         print('开始用例',name,age)
复制代码
[attach]132427[/attach]
请问结合使用的话,装饰器里面的参数为什么一定要为不可变参数?

作者: qqq911    时间: 2021-4-9 10:43
这个是规则
作者: jingzizx    时间: 2021-4-9 14:29
使用方法?
作者: bellas    时间: 2021-4-9 15:34
定义就是这样的?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2