У меня есть следующий тест:
class FirefoxTestCases(StaticLiveServerTestCase):
def setUp(self):
user = User.objects.create(
first_name="user",
last_name="one",
username="userone",
is_active=True,
)
user.set_password("test")
user.save()
self.client = webdriver.Firefox()
def tearDown(self):
self.client.quit()
def test_log_in_displays_firefox(self):
# Opening the link we want to test
self.client.get(self.live_server_url)
assert "log in" in self.client.page_source
self.client.find_element_by_id("id_username").send_keys("userone")
self.client.find_element_by_id("id_password").send_keys("test")
self.client.find_element_by_id("log_in").click()
time.sleep(2)
# Check the returned result
assert "appone" in self.client.page_source
Приложение сразу переходит на страницу входа и говорит log_in
просмотр
def log_in(request):
if request.user.is_authenticated:
return redirect("launcher")
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
user = authenticate(
request,
username=request.POST.get("username"),
password=request.POST.get("password"),
)
if user is not None:
login(request, user)
# 500 error occurs here
return redirect("launcher")
return render(request, "launcher/login.html", {"form": form})
else:
form = LoginForm()
return render(request, "launcher/login.html", {"form": form})
Форма отправляется без проблем, но в журналах выдается ошибка 500. Он снова перенаправляет на страницу входа (ожидается).
У меня есть еще один тест, в котором программно выполняется логин того же пользователя:
class TestViews(TestCase):
def setUp(self):
user = User.objects.create(
first_name="user",
last_name="two",
username="usertwo",
is_active=True,
)
user.set_password("test")
user.save()
def test_logged_in_one_app_returns_200_and_launcher(self):
"""
A user with one app sees the launcher.html page
"""
user = User.objects.get(username="usertwo")
user.set_password("test")
user.save()
test_client = Client()
test_client.login(username="usertwo", password="test")
response = test_client.get("/", follow=True)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, "launcher/launcher.html")
Этот тест проходит и работает как задумано.
Я не могу понять, почему я получаю 500 в тесте с селеном, учитывая, что пользователь существует, и я установил пароль ... Я не уверен, что происходит не так.
Если я запускаю его локально, я могу войти как пользователь без проблем, и все это работает. Но только когда я тестирую его, пользователь не может войти в систему.