11 python unit-testing mocking
我正在尝试让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)
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.我在这里错过了什么?
fal*_*tru 18
使用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
Run Code Online (Sandbox Code Playgroud)
注意:替换**args为*args.self为is_email_correct方法添加了缺少的参数.
my_side_effect 可以简化如下:
def my_side_effect(email):
return email == '1'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15978 次 |
| 最近记录: |