Как понять пример из Python Minimock? - PullRequest
2 голосов
/ 04 августа 2010

Как понять эту строку?

>>> smtplib.SMTP.mock_returns =  Mock('smtp_connection')? 

Что такое smtp_connection?Кажется, я могу изменить его на любое имя.

следующий от minimock

Here's an example of something we might test, a simple email sender::                                                        

>>> import smtplib                                                                                                       
>>> def send_email(from_addr, to_addr, subject, body):                                                                   
...     conn = smtplib.SMTP('localhost')                                                                                 
...     msg = 'To: %s\nFrom: %s\nSubject: %s\n\n%s' % (                                                                  
...         to_addr, from_addr, subject, body)                                                                           
...     conn.sendmail(from_addr, [to_addr], msg)                                                                         
...     conn.quit()                                                                                                      

Теперь мы хотим создать фиктивный smtplib.SMTP объект.Нам нужно будет
вставить наш макет в модуль smtplib ::

>>> smtplib.SMTP = Mock('smtplib.SMTP')                                                                                  
>>> smtplib.SMTP.mock_returns = Mock('smtp_connection')                                                                  

Теперь мы выполним тест:

>>> send_email('ianb@colorstudy.com', 'joe@example.com',                                                                 
...            'Hi there!', 'How is it going?')                                                                          
Called smtplib.SMTP('localhost')                                                                                         
Called smtp_connection.sendmail(                                                                                         
    'ianb@colorstudy.com',                                                                                               
    ['joe@example.com'],                                                                                                 
    'To: joe@example.com\nFrom: ianb@colorstudy.com\nSubject: Hi there!\n\nHow is it going?')                            
Called smtp_connection.quit()

1 Ответ

2 голосов
/ 04 августа 2010

Если вы прочитаете остальные документы , вы увидите следующее:

У фиктивных объектов есть несколько атрибутов, все из которых вы можете установить, когда создание объекта. Избежать столкновение имен, все атрибуты начать с mock_, а аргументы конструктора - нет.

name: Название объекта, используемого при распечатке сообщений. В примере об этом было "smtplib.SMTP".

Это имя соединения, например, используется. в:

Called smtp_connection.sendmail(                                                                                         
    'ianb@colorstudy.com',                                                                                               
    ['joe@example.com'],                                                                                                 
    'To: joe@example.com\nFrom: ianb@colorstudy.com\nSubject: Hi there!\n\nHow is it going?')                            
Called smtp_connection.quit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...