Живой сервер Django LiveServerTestCase преждевременно отключаетсяPython

Программы на Python
Ответить
Anonymous
 Живой сервер Django LiveServerTestCase преждевременно отключается

Сообщение 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()


Подробнее здесь: https://stackoverflow.com/questions/791 ... rematurely
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»