如何在Django中使用LiveServerTestCase和Selenium测试登录功能

Python

我正在为一个项目编写测试用例,并想测试我的登录功能。我正在使用LiveServerTestCase类,selenium并在Django网站[link](https://docs.djangoproject.com/en/1.8/topics/testing/tools/)中遵循此文档如果您看到以下代码:

from django.test import LiveServerTestCase
from selenium.webdriver.firefox.webdriver import WebDriver

class MySeleniumTests(LiveServerTestCase):
    fixtures = ['user-data.json']

    @classmethod
    def setUpClass(cls):
        super(MySeleniumTests, cls).setUpClass()
        cls.selenium = WebDriver()

    @classmethod
    def tearDownClass(cls):
        cls.selenium.quit()
        super(MySeleniumTests, cls).tearDownClass()

    def test_login(self):
        self.selenium.get('%s%s' % (self.live_server_url, '/login/'))
        username_input = self.selenium.find_element_by_name("username")
        username_input.send_keys('rakesh')
        password_input = self.selenium.find_element_by_name("password")
        password_input.send_keys('ranjan')
        self.selenium.find_element_by_xpath('//input[@value="Log in"]').click()

我的用户名是rakesh,密码是ranjan,我想知道为什么下面的代码在这里失败?我正确地发送了参数,但仍然不接受。

由于在每个测试用例上都会创建一个新的数据库,是否有办法在上述代码中创建新的用户和密码?我对编写测试用例特别陌生,将不胜感激。

Error: loaddata.py:225: UserWarning: No fixture named 'user-data' found.
  warnings.warn("No fixture named '%s' found." % fixture_name)

我也无法理解你的意思 fixtures = ['user-data.json']

弗朗索瓦·康斯坦斯

我强烈建议您使用工厂而不是JSON固定装置。它更具可读性且易于维护。

在您发送的示例中,我想知道密码是否已正确加密。

例子:

factories.py

from django.contrib.auth.hashers import make_password
from factory import DjangoModelFactory, Sequence


class UserFactory(DjangoModelFactory):
    class Meta:
        model = User

    # this is just an example; you need the required fields on your actual User Model
    email = Sequence(lambda n: 'john-doe-{0}@a.com'.format(n))
    username = Sequence(lambda n: 'john_doe_{0}'.format(n))
    password = make_password("password")

在您的测试中:

def test_login(self):
    rakesh = UserFactory.create(
        username="rakesh", 
        password=make_password("ranjan")
    )
    self.selenium.get('%s%s' % (self.live_server_url, '/login/'))
    ...

显然,如果仍然无法通过以下操作:

    body = self.selenium.find_element_by_tag_name('body')
    self.assertIn(u'Welcome rakesh, you have successfully logged in.', body.text)

确保打印body以找出错误所在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中使用Selenium和Beautifulsoup解析网站?

如何在python中使用Selenium和Beautifulsoup解析网站?

如何在Django测试中使用AssertRaisesMessage()

如何在Django中使用FileField测试表单?

如何在Django测试命令行中使用--failfast?

使用Django 1.11从Docker Selenium运行LiveServerTestCase

如何在Selenium和Python中使用类型查找元素

如何在laravel中使用pangination和sortByDesc功能?

如何在我的junit测试中使用循环和流?

如何在Arquillian功能测试中使用Maven耳神器?

如何在Django和Python中使用JWT(JSON Web令牌)来创建用于注册和登录的REST API

如何在Django中使用npm软件包和ES6功能?

如何在ngOnInit中使用条件测试功能

如何在Geb测试中使用siblings()和最近的()

在Selenium中使用python登录结果的测试用例

如何在Codeception功能测试中使用PHPUnit断言方法?

如何在Django中使用不同的数据库引擎进行测试和生产

如何在不同的浏览器中使用LiveServerTestCase运行硒测试?

如何在功能测试中使用Rspec和Capybara测试cookie?

如何在登录中使用盐和哈希?

如何在具有登录功能的PHP中使用会话?

Selenium-如何在JS测试文件中使用JavascriptExecutor?

如何在Django中使用加密密码登录

如何在 Django 中使用“DEBUG=TRUE”运行测试

如何在 Python 中使用 selenium 刮取 > 和 < 之间的值?

如何在codeigniter中使用phpunit测试我的登录页面?

如何在 Python 中使用 selenium 登录网站?

如何在 React 中使用 Enzyme 和 Jest 编写功能测试

如何在 cypress.io 中使用多个登录名、URL 和 body 元素运行相同的测试