[英]Passing self in a decorator with params
我试图在单元测试中设置一个装饰器,装饰器的目的是确保用户在访问其他端点之前登录。
下面是登录的装饰器:
def login_decorator(*args, **kwargs):
def login_user():
kwargs['self'].client.login(
username=kwargs['email'],
password=kwargs['password'],
)
然后我尝试在单元测试 function 中使用它,如下所示:
@login_decorator(self=self, email=self.email, password=self.password)
def test_customer_profile_add(self):
response = super().create_customer_profile(self.customer_data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
但是self
带有错误 Unresolved reference 的下划线,我怎样才能通过 self.decorator 实现参数的传递。
您应该将参数传递给login_user
function:
def login_decorator(func):
def login_user(self, *args, **kwargs):
# function args
print(self.username, self.password)
self.client.login(
username=self.username,
password=self.password,
)
func(self, *args, **kwargs)
和你的测试 function:
@login_decorator
def test_customer_profile_add(self):
response = super().create_customer_profile(self.customer_data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.