#python #django #testing
#python #django #тестирование
Вопрос:
Я новичок в Django Python, поэтому я не уверен, насколько этот вопрос будет иметь смысл.
По сути, я работаю над проектом (не созданным мной), который имеет функцию в views.py досье. Цель этой функции просмотра — не выдавать HTTP-ответ, а отправлять электронное письмо.
Он принимает запрос в качестве параметра (который содержит данные, которые будут обработаны — некоторые из них вставляются в электронное письмо.
В конце функции выполняется вызов функции email_extrals.utils send_mail_template (передаются различные переменные).
Моя проблема в том, что я хочу написать тест для этой функции, который по сути ничего не возвращает (что я вижу — он просто отправляет электронное письмо). Эта функция представления фактически вызывается в другом месте API.
Цель этого теста — убедиться, что если в данных запроса присутствуют определенные переменные, то они должны присутствовать в переменной, которая передается в вызов send_email_template() . Итак, я как бы тестирую переменные внутри функции, а не то, что возвращается.
Мне нужен способ каким-то образом получить доступ к внутренним переменным функции, чтобы их протестировать.
Я не могу придумать способ проверить это, и на данный момент я бьюсь головой о стену. Любая тестовая информация, которую я могу найти в Интернете для просмотров, в основном просто проверяет ответы или различные проблемы, связанные с моделью.
Любой толчок в правильном направлении был бы огромной помощью. Ссылка на документы или базовый пример чего-то подобного.
Спасибо, Дин
Комментарии:
1. Я бы, вероятно, создал вторую функцию, которую вызывает 1-я, которая принимает запрос и возвращает все необходимое для отправки электронного письма, а затем протестировал его.
Ответ №1:
Одним из способов решения этой проблемы было бы создать собственную поддельную версию send_email_template()
, которая ничего не делает, кроме проверки того, что она была вызвана с желаемыми значениями аргументов, и вызывает исключение, если они неверны.
Затем в вашей тестовой настройке вы заменили бы реальную send_email_template()
на поддельную. Это называется издевательством.
И на всякий случай вы также хотели бы утверждать, что ваша поддельная функция действительно была вызвана.
Комментарии:
1. Вы, сэр, джентльмен! Большое вам спасибо.