Python unittest.mock.patch не работает должным образом - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь протестировать созданную мной функцию, чтобы отправить приветственное электронное письмо пользователю. Но, чтобы сделать это, я должен смоделировать функцию, которая фактически отправляет его (внутри функции приветствия по электронной почте). У меня следующая структура папок:

app/
   __init__.py
   mail.py
tests/
   __init__.py
   conftest.py
   test_mail.py

Это код, который у меня есть в mail.py

import flask_mail

mail = flask_mail.Mail()

def send_mail(subject, sender, recipients, text_body, html_body):
    msg = flask_mail.Message(subject, sender=sender, recipients=recipients, body=text_body, html=html_body)
    mail.send(msg)


def send_sign_up_mail(user):
    subject = "Test subject"
    sender = ("Test sender", "testsender@gmail.com")
    recipients = [user.email]
    text_body = "text body"
    html_body = f"Test html body"
    send_mail(subject, sender, recipients, text_body, html_body)

И это код test_mail.py , тест, который я пытаюсь создать:

from unittest import mock
from app.mail import send_sign_up_mail

@mock.patch('app.mail.send_mail')
def test_send_sign_up_mail(mock_send_mail, user):

send_sign_up_mail(user)

assert mock_send_mail.call_count == 1

Аргумент user - это прибор, который я создал, и он работает, поэтому не нужнобеспокоиться об этом.

Используя отладчик pdb , я проверил, что функция send_mail не подвергается насмешке внутри send_sign_up_mail .

...