Я пытался запустить несколько функциональных тестов (LiveServerTestCase) с помощью Selenium для приложения Django. Для демонстрации это приложение для создания заметок. Когда я пытаюсь имитировать создание заметки, требуется аутентификация, поэтому при настройке необходимо войти в панель администратора, вставить учетные данные в поля формы, а затем отправить их.
После этого я программно перенаправить на страницу, где я должен писать заметки, но как только я нажимаю «Отправить», возникает запрещенная ошибка. В нем говорится, что экземпляр, выполняющий тест, является AnonymousUser, следовательно, отправка не выполняется. Имейте в виду, что отправка находится в конце тестового примера, поэтому я не могу не предположить, что сервер завершит работу преждевременно. Есть ли у меня пропущенный флаг или конфигурация, объясняющая, почему это происходит?
Пример кода тестового примера:
class NoteTakingTest(StaticLiveServerTestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
chrome_options = Options()
cls.selenium = WebDriver(options=chrome_options)
cls.selenium.implicitly_wait(10)
@classmethod
def tearDownClass(cls):
cls.selenium.quit()
return super().tearDownClass()
def setUp(self):
super().setUp()
user = User.objects.create_superuser(email="admin@testing.com", password="admin")
self.selenium.get(f"{self.live_server_url}/admin/login")
email = self.selenium.find_element(By.ID, "id_username")
password = self.selenium.find_element(By.ID, "id_password")
email.send_keys("admin@testing.com")
password.send_keys("admin")
form = self.selenium.find_element(By.ID, "login-form")
form.submit()
def access(self, url):
self.selenium.get(self.live_server_url + url)
def test_pipeline_page_access(self):
pipeline_url = reverse("notes")
self.access(pipeline_url)
self.assertFalse(self.selenium.title.startswith("404"))
wait = WebDriverWait(self.selenium, 10)
submit_button = wait.until(EC.visibility_of_element_located((By.ID, f'note-submit-btn')))
self.selenium.execute_script("arguments[0].scrollIntoView();", submit_button)
# Clicking on the submit button triggers a POST request to /notes
submit_button.click()
Пример кода тестового примера:
class NoteViewSet(viewsets.ModelViewSet):
"""
A viewset that provides the standard actions
"""
serializer_class = NoteSerializer
permission_classes = (permissions.IsAuthenticated,)
def perform_create(self, serializer):
if not self.request.user.is_authenticated:
raise PermissionDenied("You are not authorized to create a note.")
updated_object = serializer.save()
Подробнее здесь: https://stackoverflow.com/questions/791 ... rematurely
Живой сервер Django LiveServerTestCase преждевременно отключается ⇐ Python
Программы на Python
-
Anonymous
1731927035
Anonymous
Я пытался запустить несколько функциональных тестов (LiveServerTestCase) с помощью Selenium для приложения Django. Для демонстрации это приложение для создания заметок. Когда я пытаюсь имитировать создание заметки, требуется аутентификация, поэтому при настройке необходимо войти в панель администратора, вставить учетные данные в поля формы, а затем отправить их.
После этого я программно перенаправить на страницу, где я должен писать заметки, но как только я нажимаю «Отправить», возникает запрещенная ошибка. В нем говорится, что экземпляр, выполняющий тест, является AnonymousUser, следовательно, отправка не выполняется. Имейте в виду, что отправка находится в конце тестового примера, поэтому я не могу не предположить, что сервер завершит работу преждевременно. Есть ли у меня пропущенный флаг или конфигурация, объясняющая, почему это происходит?
Пример кода тестового примера:
class NoteTakingTest(StaticLiveServerTestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
chrome_options = Options()
cls.selenium = WebDriver(options=chrome_options)
cls.selenium.implicitly_wait(10)
@classmethod
def tearDownClass(cls):
cls.selenium.quit()
return super().tearDownClass()
def setUp(self):
super().setUp()
user = User.objects.create_superuser(email="admin@testing.com", password="admin")
self.selenium.get(f"{self.live_server_url}/admin/login")
email = self.selenium.find_element(By.ID, "id_username")
password = self.selenium.find_element(By.ID, "id_password")
email.send_keys("admin@testing.com")
password.send_keys("admin")
form = self.selenium.find_element(By.ID, "login-form")
form.submit()
def access(self, url):
self.selenium.get(self.live_server_url + url)
def test_pipeline_page_access(self):
pipeline_url = reverse("notes")
self.access(pipeline_url)
self.assertFalse(self.selenium.title.startswith("404"))
wait = WebDriverWait(self.selenium, 10)
submit_button = wait.until(EC.visibility_of_element_located((By.ID, f'note-submit-btn')))
self.selenium.execute_script("arguments[0].scrollIntoView();", submit_button)
# Clicking on the submit button triggers a POST request to /notes
submit_button.click()
Пример кода тестового примера:
class NoteViewSet(viewsets.ModelViewSet):
"""
A viewset that provides the standard actions
"""
serializer_class = NoteSerializer
permission_classes = (permissions.IsAuthenticated,)
def perform_create(self, serializer):
if not self.request.user.is_authenticated:
raise PermissionDenied("You are not authorized to create a note.")
updated_object = serializer.save()
Подробнее здесь: [url]https://stackoverflow.com/questions/79199632/django-liveservertestcase-live-server-shuts-down-prematurely[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия