Как дразнить пользователей и запросы в django

У меня есть код django, который взаимодействует с объектами запроса или пользовательскими объектами. Например, что-то как:

foo_model_instance = models.get_or_create_foo_from_user(request.user)

Если бы Вы собирались протестировать с django оболочкой Python или в unittest, что Вы передали бы туда? Здесь просто Пользовательский объект сделает, но потребность в ложном объекте запроса также часто подходит.

Для оболочки или для unittests:

  • Как Вы дразните пользователей?
  • Как Вы дразните запросы?
67
задан Purrell 10 January 2010 в 05:20
поделиться

4 ответа

Вы можете либо раскатывать свои собственные насмешки, как предложил Anurag Uniyal, либо использовать фреймворк для насмешек.

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

7
ответ дан 24 November 2019 в 14:35
поделиться

Вам не нужно насмешать пользователям, так как вы можете просто создать один в своем тесте - база данных уничтожена после завершения теста.

Для заправок, используйте этот фрагмент от Simon Willison.

5
ответ дан 24 November 2019 в 14:35
поделиться

Читайте о товарах издевателя здесь
http://en.wikipedia.org/wiki/mock_object
http://www.mockobjects.com/

и используйте этот python lib для замедления пользователя
http://python-mock.sourceforge.net/

Иначе вы можете написать простой пользовательский класс самостоятельно, используйте это как отправную точку

class MockUser(object):
    def __call__(self, *args, **kwargs):
        return self

    def __getattr__(Self, name):
        return self

Добавление шкафов SPECEFIC ETC и т. Д.

6
ответ дан 24 November 2019 в 14:35
поделиться

Как вы высмеиваете пользователей?

Инициализирует django.contrib.auth.models.user объект. user.Objects.create_user делает это легко.

Как вы запрашиваете запросы?

Инициализируют объект django.http.htttprequest .

Конечно, есть ярлыки в зависимости от того, что вы хотите сделать. Если вам просто нужен объект с атрибутом , который указывает на пользователя, просто создайте что-нибудь (что-нибудь) и дайте ему этот атрибут.

48
ответ дан 24 November 2019 в 14:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: