簡體   English   中英

帶有side_effect的Python補丁對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM