Tôi là một người mới bắt đầu Django tương đối và chỉ mới bắt đầu thực hiện một số thử nghiệm cho các dự án của tôi. Những gì tôi muốn làm là xây dựng một thử nghiệm chức năng với selen mà đăng nhập vào trang web Admin Django.Bạn có thể tạo người dùng quản trị bằng Factory_Boy như thế nào?
Lần đầu tiên tôi làm theo hướng dẫn này http://www.tdd-django-tutorial.com/tutorial/1/ và các đồ đạc đã sử dụng và dumpdata để làm cho thông tin tài khoản quản trị có sẵn cho ứng dụng thử nghiệm (tạo cơ sở dữ liệu mới). Điều này hoạt động tốt.
Sau đó tôi muốn xem liệu tôi có thể thực hiện tương tự bằng cách sử dụng factory-boy để thay thế các đồ đạc hay không. Nhà máy cậu bé hoạt động bằng cách instantiating các đối tượng cần thiết trong file tests.py mà dường như sạch hơn với tôi. Bằng cách nào đó tôi không thể có được điều này để làm việc và các tài liệu Factory_boy không phải là quá hữu ích ...
Đây là tests.py tôi
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...')
này thất bại trong việc đăng nhập như là bằng cách nào đó nó không tạo ra một tài khoản quản trị hợp lệ. Làm thế nào tôi có thể làm điều đó bằng cách sử dụng nhà máy-boy? Có thể hay tôi cần sử dụng đồ đạc cho điều đó?
(Trong bài đăng này một số người đề xuất đồ đạc là cần thiết nhưng cậu bé nhà máy đã không đưa ra: How to create admin user in django tests.py. Tôi cũng đã thử giải pháp được đề xuất ở dưới cùng trong cùng một câu trả lời: https://stackoverflow.com/a/3495219/1539688. Nó không hoạt động cho tôi .. .)
Làm cách nào bạn có thể đặt 'Nhóm người dùng'. – Shubham
Đối với những người tìm kiếm bài đăng này ngay bây giờ, 2.5.0+ giờ bỏ qua các thuộc tính 'FACTORY_ *' có lợi cho việc xác định các thuộc tính trong lớp Meta bên trong: http://factoryboy.readthedocs.io/en/latest/changelog.html#upgrading – RevolutionTech