Тестовые приборы Django: как справиться с динамическими значениями (то есть будущими датами) - PullRequest
2 голосов
/ 20 марта 2011

В настоящее время я делаю TDD для многоразового приложения Django.Один тест должен убедиться, что мое представление возвращает только статьи с датой публикации, которая была в прошлом.Я совершенно новичок в тестировании в Джанго.До сих пор я узнал, как использовать файлы .json в качестве приспособлений для моих тестовых классов.

Однако для этого теста я не хочу вставлять даты публикации, которые будут через 1000 лет.После того, как все другие виды могут обнаружить наш древний интернет, проверьте мой источник и задайтесь вопросом, почему мой тест не проходит :) Какие есть другие подходы для решения этой проблемы?Статические файлы .json, похоже, немного сложны в обслуживании, так как приложение растет. Мокать метод datetime.datetime.now () в моих тестах также кажется утомительным.способ создания приспособления .json на лету до запуска теста, и у меня всегда есть 2 дня с даты публикации некоторых моих записей ...

Ответы [ 3 ]

1 голос
/ 21 марта 2011

Вы можете попробовать создать подклассы функций datetime (см. "Использование объектов Mock в Django для проверки текущей даты" ).

0 голосов
/ 16 февраля 2013

Вы можете попробовать использовать динамический светильник django , он автоматически заполнит свойства даты / времени.

0 голосов
/ 22 марта 2011

Насмешливое свидание с датой было моей первой мыслью, но поскольку LaundroMat сам указывал в своем посте на блоге, это довольно хакерское и плохое.

Я нашел другое решение:

Я простоотказался от приспособлений .json.Я даже не знаю, почему Django рекомендует их использовать.Они выглядят некрасиво и их невозможно поддерживать.

Вместо этого я добавил модуль test_data.py в мою папку приспособлений.Этот модуль импортирует мои модели и определяет несколько хороших методов, которые создают для меня тестовые данные.В своем файле tests.py я удалил строку fixtures = ['some_json_file'] и добавил вместо этого метод setUp ().Этот метод выполняет мои «динамические фикстуры» из моего модуля test_data.py.

Это настолько просто и очевидно, что мне интересно, есть ли что-то не так с этим подходом.Если никто не прокомментирует это решение, я отмечу, что оно принято через пару недель или около того ...

...