Я пытаюсь написать LiveServerTestCase
для веб-сайта, который защищен двухфакторной аутентификацией Django . То, что у меня пока есть:
import os
from urllib.parse import urljoin
from django.urls import reverse
from django.conf import settings
from lucy_web.test_factories import UserFactory
from django.contrib.staticfiles.testing import StaticLiveServerTestCase
from selenium import webdriver
chromedriver_path = os.path.join(os.path.dirname(os.path.dirname(settings.BASE_DIR)), 'chromedriver')
assert os.path.isfile(chromedriver_path), f"There should be a chromedriver executable at {chromedriver_path}"
class SeleniumTest(StaticLiveServerTestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.driver = webdriver.Chrome(chromedriver_path)
cls.password = 'foobar' # Set the password here to avoid using the hashed attribute
cls.user = UserFactory(password=cls.password, is_superuser=True)
def test_login(self):
url = urljoin(self.live_server_url, reverse('dashboard:families'))
self.driver.get(url)
self.driver.find_element_by_name('auth-username').send_keys(self.user.username)
self.driver.find_element_by_name('auth-password').send_keys(self.password)
self.driver.find_element_by_xpath('//input[@value="Next"]').click()
Проблема заключается в том, что в этот момент драйвер попадает на страницу входа с двухфакторной аутентификацией, на которой требуется отсканировать QR-код:
Это слишком сложно, чтобы использовать тестовый браузер, поэтому я хотел бы использовать override_settings
, чтобы отключить двухфакторную аутентификацию в целях тестирования. Однако, глядя на Общие настройки двухфакторной аутентификации Django, я не смог найти параметр, который отключает его.
Можно ли как-нибудь отключить двухфакторную аутентификацию, чтобы продолжить этот тестовый пример с живым сервером?