Я пытаюсь проверить представление, которое пока показывает только шаблон. Для доступа к представлению пользователю необходимо разрешение 'projects.can_view'
.
Я пытаюсь создать пользователя с этим разрешением в тестовой БД, используя прибор, затем я пытаюсь войти в систему с именем пользователя и паролем моего пользователя в БД. Я пытаюсь открыть представление, но получаю сообщение об ошибке 302 (перенаправить в представление входа в систему). Я могу проверить, правильно ли я передал разрешения:
Мой прибор:
@pytest.fixture()
def create_users_with_permissions():
User = get_user_model()
u = User.objects.create(
username="test",
password="pass",
)
permission = Permission.objects.get(name='Can view project')
u.user_permissions.add(permission)
u = User.objects.get(username='test')
print(u.has_perm('appname.view_project'))
return u
Я запрашиваю пользователь снова должен удалить кеш разрешений, как описано в do c (https://docs.djangoproject.com/en/3.0/topics/auth/default/). Когда я распечатываю print(u.has_perm('appname.view_project'))
, возвращается True
. Таким образом, я предполагаю, что у меня есть пользователь с указанным разрешением c.
Теперь я передаю приспособление в свой тест и записываю клиентское приспособление pytests в:
def test_xyz(
self, client, create_users_with_permissions
):
client.login(
username=create_users_with_permissions.username,
password=create_users_with_permissions.password
)
url = reverse('urlforview')
response = client.get(url)
assert response.status_code == 200
Это происходит с ошибкой с кодом: assert 302 == 200
Если я создаю суперпользователь в БД и войти в систему с соответствующим пользователем, он работает. Когда я жестко кодирую имя пользователя и пароль, он также не работает. Чего мне здесь не хватает?
Спасибо за любую помощь или предложение, очень признателен!
Мой взгляд имеет только это:
class ProjectCustomerList(PermissionRequiredMixin, TemplateView):
template_name = 'mytemplate.html'
permission_required = 'projects.can_view'