如何在 Django 中为简单用户和超级用户编写测试用例
How to write test cases for Simple Users and Super Users in Django
我想在 Django 中编写测试用例来检查哪个用户是 simple user
,哪个用户是 SuperUser
,遇到了这段代码:
def test_login_user(self):
self.selenium.get('%s%s' % (self.live_server_url, '/login/'))
username_input = self.selenium.find_element_by_name("username")
username_input.send_keys('testuser')
password_input = self.selenium.find_element_by_name("password")
password_input.send_keys('testpass')
self.selenium.find_element_by_xpath('//button[@type="submit"]').click()
#password_input.send_keys(Keys.RETURN)
def test_login_staff(self):
self.selenium.get('%s%s' % (self.live_server_url, '/login/'))
username_input = self.selenium.find_element_by_name("username")
username_input.send_keys('testadmin')
password_input = self.selenium.find_element_by_name("password")
password_input.send_keys('testpass')
我的代码在我的项目中 运行 很好,但我的问题是当我们输入一些无效的登录凭据时,你如何 return False
在这里。目前,即使我传递了一些无效的用户名和密码,它也不会显示任何内容。
My fixture : fixtures = [{"fields": {"username": "rakesh", "first_name": "", "last_name": "", "is_active": True, "is_superuser": True, "is_staff": True, "last_login": "2015-10-17T20:20:37.455Z", "groups": [], "user_permissions": [], "password": "pbkdf2_sha256000tGw8u4pGPxD$WmJVx9QDjFx0xZHq5vt/XgPXjYYvRn2tARyTzQ6RRYg=", "email": "rakesh.sukla53@gmail.com", "date_joined": "2015-10-06T19:02:04.044Z"}, "model": "auth.user", "pk": 1}]
进行硒测试时,标准做法是检查某些元素是否存在。但是,您无法通过访问登录名 url 来测试用户是否为员工,您必须访问“/admin/login/”url,这是超级用户或员工用户登录的地方管理控制台。因此你的测试可能会变成:
from selenium.common.exceptions import NoSuchElementException
def test_login_staff(self):
self.selenium.get('%s%s' % (self.live_server_url, '/admin/login/'))
username_input = self.selenium.find_element_by_name("username")
username_input.send_keys('testadmin')
password_input = self.selenium.find_element_by_name("password")
password_input.send_keys('testpass')
time.sleep(3)
self.assertRaises(NoSuchElementException, self.driver.find_element_by_name,"username")
以上代码断言员工登录成功。另一方面,如果您想检查员工登录是否失败,代码应该是
self.assertTrue(self.driver.find_element_by_name,"username")
附带说明一下,我建议再次使用 self.selenium
作为变量名,这可能会造成混淆,因为该库也称为 selenium。我可以建议您改用 self.driver
吗?
更新:
如果您正在测试用户是超级用户还是员工,您可能希望在开始 selenium
之前断言该条件
u = User.objects.get(username = 'testadmin')
self.assertTrue(u.is_staff)
self.assertTrue(u.is_superuser)
我想在 Django 中编写测试用例来检查哪个用户是 simple user
,哪个用户是 SuperUser
,遇到了这段代码:
def test_login_user(self):
self.selenium.get('%s%s' % (self.live_server_url, '/login/'))
username_input = self.selenium.find_element_by_name("username")
username_input.send_keys('testuser')
password_input = self.selenium.find_element_by_name("password")
password_input.send_keys('testpass')
self.selenium.find_element_by_xpath('//button[@type="submit"]').click()
#password_input.send_keys(Keys.RETURN)
def test_login_staff(self):
self.selenium.get('%s%s' % (self.live_server_url, '/login/'))
username_input = self.selenium.find_element_by_name("username")
username_input.send_keys('testadmin')
password_input = self.selenium.find_element_by_name("password")
password_input.send_keys('testpass')
我的代码在我的项目中 运行 很好,但我的问题是当我们输入一些无效的登录凭据时,你如何 return False
在这里。目前,即使我传递了一些无效的用户名和密码,它也不会显示任何内容。
My fixture : fixtures = [{"fields": {"username": "rakesh", "first_name": "", "last_name": "", "is_active": True, "is_superuser": True, "is_staff": True, "last_login": "2015-10-17T20:20:37.455Z", "groups": [], "user_permissions": [], "password": "pbkdf2_sha256000tGw8u4pGPxD$WmJVx9QDjFx0xZHq5vt/XgPXjYYvRn2tARyTzQ6RRYg=", "email": "rakesh.sukla53@gmail.com", "date_joined": "2015-10-06T19:02:04.044Z"}, "model": "auth.user", "pk": 1}]
进行硒测试时,标准做法是检查某些元素是否存在。但是,您无法通过访问登录名 url 来测试用户是否为员工,您必须访问“/admin/login/”url,这是超级用户或员工用户登录的地方管理控制台。因此你的测试可能会变成:
from selenium.common.exceptions import NoSuchElementException
def test_login_staff(self):
self.selenium.get('%s%s' % (self.live_server_url, '/admin/login/'))
username_input = self.selenium.find_element_by_name("username")
username_input.send_keys('testadmin')
password_input = self.selenium.find_element_by_name("password")
password_input.send_keys('testpass')
time.sleep(3)
self.assertRaises(NoSuchElementException, self.driver.find_element_by_name,"username")
以上代码断言员工登录成功。另一方面,如果您想检查员工登录是否失败,代码应该是
self.assertTrue(self.driver.find_element_by_name,"username")
附带说明一下,我建议再次使用 self.selenium
作为变量名,这可能会造成混淆,因为该库也称为 selenium。我可以建议您改用 self.driver
吗?
更新: 如果您正在测试用户是超级用户还是员工,您可能希望在开始 selenium
之前断言该条件u = User.objects.get(username = 'testadmin')
self.assertTrue(u.is_staff)
self.assertTrue(u.is_superuser)