Тестовые переменные ВНУТРИ функции представления — нет возврата

#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. Вы, сэр, джентльмен! Большое вам спасибо.