Я относительный новичок в Django и только начал тестировать свои проекты. Что я хочу сделать, так это создать функциональный тест с селеном, который входит на сайт администратора Django.
Сначала я следовал этому руководству http://www.tdd-django-tutorial.com/tutorial/1/ и использовали фикстуры и данные дампа, чтобы сделать информацию об учетной записи администратора доступной для тестируемого приложения (которое создает новую базу данных). Это прекрасно работает.
Затем я хотел посмотреть, смогу ли я сделать то же самое, используя factory-boy для замены приборов. Фабричный мальчик создает экземпляр необходимого объекта в файлеtests.py, что мне кажется более понятным. Почему-то я не могу заставить это работать, и документация Factory_boy не слишком полезна...
Вот мои тесты.py
from django.test import LiveServerTestCase
from django.contrib.auth.models import User
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import factory
class UserFactory(factory.Factory):
FACTORY_FOR = User
username = 'jeff'
password = 'pass'
is_superuser = True
class AdminTest(LiveServerTestCase):
def setUp(self):
self.browser = webdriver.Firefox()
def tearDown(self):
self.browser.quit()
def test_if_admin_login_is_possible(self):
jeff = UserFactory.create()
# Jeff opens the browser and goes to the admin page
self.browser = webdriver.Firefox()
self.browser.get(self.live_server_url + '/admin/')
# Jeff sees the familiar 'Django Administration' heading
body = self.browser.find_element_by_tag_name('body')
self.assertIn('Django administration', body.text)
# Jeff types in his username and password and hits return
username_field = self.browser.find_element_by_name('username')
username_field.send_keys(jeff.username)
password_field = self.browser.find_element_by_name('password')
password_field.send_keys(jeff.password)
password_field.send_keys(Keys.RETURN)
# Jeff finds himself on the 'Site Administration' page
body = self.browser.find_element_by_tag_name('body')
self.assertIn('Site administration', body.text)
self.fail('Fail...')
Это не позволяет войти в систему, поскольку каким-то образом он не создает действующую учетную запись администратора. Как я могу сделать это, используя factory-boy? Возможно ли это или мне нужно использовать приспособления для этого?
(В этом посте некоторые люди предположили, что необходимы приспособления, но фабричный мальчик не придумал: Как создать пользователя-администратора в djangotests.py. Я также попробовал решение, предложенное внизу в том же ответе: https://stackoverflow.com/a/3495219/1539688. У меня это не сработало...)