![](/img/trans.png)
[英]python patch with side_effect on Object's method is not called with self
[英]Python patch object with a side_effect
我正在嘗試讓Mock對象根據給定的輸入返回某些值。 我在SO上查了幾個例子,由於某些原因我仍然無法讓它工作。 這就是我現在所擁有的。
class EmailChecker():
def is_email_correct(email):
some regex to determine if email is valid, returns either True or False
def my_side_effect(**args):
if args[0] == '1':
return True
else:
return False
myMock = mock.patch.object(EmailChecker, 'is_email_correct', side_effect=my_side_effect)
但它似乎沒有用。 我在這里錯過了什么?
使用patch.object
作為裝飾器或上下文管理器,如下面的代碼所示:
>>> class EmailChecker():
... def is_email_correct(self, email):
... pass
...
>>> def my_side_effect(*args):
... if args[0] == '1':
... return True
... else:
... return False
...
>>> with mock.patch.object(EmailChecker, 'is_email_correct', side_effect=my_side_effect):
... checker = EmailChecker()
... print(checker.is_email_correct('1'))
... print(checker.is_email_correct('2'))
...
True
False
注意 :用*args
替換**args
*args
。 為is_email_correct
方法添加了缺少的self
參數。
my_side_effect
可以簡化如下:
def my_side_effect(email):
return email == '1'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.