私は比較的 Django の初心者で、自分のプロジェクトのテストを始めたところです。私がやりたいことは、Django Admin サイトにログインするセレンを使用した機能テストを構築することです。
最初にこのチュートリアルhttp://www.tdd-django-tutorial.com/tutorial/1/に従い、フィクスチャとダンプデータを使用して、テスト アプリ (新しいデータベースを作成する) で管理者アカウント情報を利用できるようにしました。これはうまくいきます。
次に、 factory-boyを使用して同じことができるかどうかを確認して、備品を交換したいと思いました。Factory boy は、tests.py ファイル内で必要なオブジェクトをインスタンス化することで機能します。どういうわけかこれを機能させることができず、Factory_boy のドキュメントはあまり役に立ちません...
ここに私のtests.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 を使用してそれを行うにはどうすればよいですか? それは可能ですか、それともフィクスチャを使用する必要がありますか?
(この投稿では、一部の人々はフィクスチャが必要であると提案しましたが、工場の少年は出てきませんでした: How to create admin user in django tests.py。同じ回答の下部で提案されている解決策も試しました: https://stackoverflow. com/a/3495219/1539688 . 私にはうまくいきませんでした...)