我是一个相对的Django初学者,刚开始为我的项目做一些测试。我想要做的就是用selenium构建一个功能测试,并登录到Django Admin站点。如何使用Factory_Boy创建管理员用户?
我第一次跟着这个教程http://www.tdd-django-tutorial.com/tutorial/1/并用夹具和dumpdata,使可用于测试应用程序(这将创建一个新的数据库)的管理员帐户信息。这工作正常。
然后我想看看我是否可以使用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...')
这不能因为不知它不会创建一个登录有效的管理帐户。我该如何使用工厂男孩做到这一点?这是可能的还是我需要使用夹具?
(在这篇文章中的一些人建议灯具是必要的,但工厂的男孩没上来。How to create admin user in django tests.py我也尝试过解决方案建议在相同的答案底部:https://stackoverflow.com/a/3495219/1539688它并没有为我工作.. )
如何设置'User Groups'。 – Shubham 2015-02-06 12:17:43
对于那些现在发现这个帖子,2.5.0+现在忽略'厂_ *'有利于在内部元类中定义的属性的属性: http://factoryboy.readthedocs.io/en/latest/changelog.html#upgrading – RevolutionTech 2017-11-30 21:18:07