У меня есть общее представление, подобное этому:
class SaveView(CreateView):
def get_initial(self):
# Get the initial dictionary from the superclass method
initial = super(SaveView, self).get_initial()
# Copy the dictionary so we don't accidentally change a mutable dict
initial = initial.copy()
initial['user'] = self.request.user
return initial
Это представление имеет декоратор login_required
, поэтому self.request.user
всегда действует.
Когда я захожу на страницус браузером все работает нормально, но мои тесты не проходят.У меня есть следующие настройки теста:
from django.test import TestCase, client
class MyTest(TestCase):
def setUp(self):
self.client = client.Client()
def test1(self):
self.assertTrue(self.client.login(username='user1',password='password1'))
data = {'name':'test 1'}
response = self.client.post('/app/save/', data)
self.assertEqual(response.status_code, 302)
'/ app / save /' - это URL, который вызывает это представление (он отлично работает в браузере. Моя модель имеет 2 обязательных поля: «имя» и «пользователь»)., так что это должно вызвать перенаправление на страницу созданного объекта, так как я передал имя через данные, и пользователь должен быть получен методом get_initial.
Действительно, это то, что происходит в «реальной жизни», т.е.browser.
Единственный способ, которым я мог успешно пройти этот тест, минуя «пользователя» в словаре данных.
Это ошибка в модуле django.test или это ожидаемое поведение ипочему?
Заранее спасибо