Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中为简单用户和超级用户编写测试用例_Python_Django_Selenium_Django Testing - Fatal编程技术网

Python 如何在Django中为简单用户和超级用户编写测试用例

Python 如何在Django中为简单用户和超级用户编写测试用例,python,django,selenium,django-testing,Python,Django,Selenium,Django Testing,我想用Django编写测试用例,以检查哪个用户是简单用户,哪个是超级用户,并遇到以下代码: 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_key

我想用Django编写测试用例,以检查哪个用户是
简单用户
,哪个是
超级用户
,并遇到以下代码:

    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')
我的代码在我的项目中运行良好,但我的问题是,当我们输入一些无效的登录凭据时,如何在此处返回
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_sha256$20000$1tGw8u4pGPxD$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") 
另一方面,我建议agains使用
self.selenium
作为变量名,因为该库也称为selenium,这可能会让人困惑。我可以建议您改用
self.driver

更新: 如果您正在测试该用户是超级用户还是员工,您可能希望在启动selenium之前声明该条件

u = User.objects.get(username = 'testadmin')
self.assertTrue(u.is_staff)
self.assertTrue(u.is_superuser)

非常感谢你。此内容非常有用:)我在测试人员登录时传递了正确的
用户名
密码
,但显示的是
Django管理请为员工帐户输入正确的用户名和密码。请注意,这两个字段可能区分大小写。用户名:密码:
是,正如我提到的超级用户和管理员测试的正确链接。仅仅通过普通页面登录并不能区分超级用户和普通用户。你需要转到管理员登录页面。我在管理员页面上测试了
用户名
密码
,但仍然显示无效的员工和超级用户帐户?您可能希望在开始之前声明这一点。更新我的答案。