У меня есть код django, который взаимодействует с объектами запроса или пользовательскими объектами. Например, что-то как:
foo_model_instance = models.get_or_create_foo_from_user(request.user)
Если бы Вы собирались протестировать с django оболочкой Python или в unittest, что Вы передали бы туда? Здесь просто Пользовательский объект сделает, но потребность в ложном объекте запроса также часто подходит.
Для оболочки или для unittests:
Вы можете либо раскатывать свои собственные насмешки, как предложил Anurag Uniyal, либо использовать фреймворк для насмешек.
В ответ на тезис о том, что вы можете просто создать обычного пользователя, как это было бы в любом случае в Django.... Я бы посоветовал, что это не соответствует юнит-тестированию. Юнит-тест не должен касаться базы данных, но, создавая пользователя, вы изменили базу данных, поэтому нам бы захотелось над ней поиздеваться.
Вам не нужно насмешать пользователям, так как вы можете просто создать один в своем тесте - база данных уничтожена после завершения теста.
Для заправок, используйте этот фрагмент от Simon Willison.
Читайте о товарах издевателя здесь
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 и т. Д.
Как вы высмеиваете пользователей?
Инициализирует django.contrib.auth.models.user
объект. user.Objects.create_user
делает это легко.
Как вы запрашиваете запросы?
Инициализируют объект django.http.htttprequest
.
Конечно, есть ярлыки в зависимости от того, что вы хотите сделать. Если вам просто нужен объект с атрибутом
, который указывает на пользователя, просто создайте что-нибудь (что-нибудь) и дайте ему этот атрибут.