用django运行selenium测试的nose插件

django-nose-selenium的Python项目详细描述


为鼻子测试套件添加硒测试支持。

要使用,请使用--with-selenium标志运行nosetests。

为什么要用硒?

selenium是一个可移植的web应用程序测试框架。它允许你 编写在浏览器中运行的测试来测试用户界面和javascript 在通常的测试通道中不可用的代码。看例子 下面是为了更清楚地了解硒测试可以提供什么。

django nose selenium允许您以与 通常的django单元测试。

要求

插件希望您已经配置了django-nose应用程序。简而言之, 这是通过运行pip install django-nose,将django_nose添加到 INSTALLED_APPS并将TEST_RUNNER设置为 django_nose.NoseTestSuiteRunner在settings.py中。

安装

来自PYPI:

pip install django-nose-selenium

In-development version 通过PIP:

pip install django-nose-selenium==dev

直接从Git获得:

pip install -e
git://github.com/weluse/django-nose-selenium.git#egg=django-nose-selenium

django设置

插件支持以下设置:

  • SELENIUM_HOST, default: 127.0.0.1
  • SELENIUM_PORT, default: 4444
  • SELENIUM_BROWSER_COMMAND, default: chrome
  • SELENIUM_URL_ROOT, default: http://127.0.0.1:8000
  • FORCE_SELENIUM_TESTS, default: False. By default, SocketErrors cause the tests to be skipped. This options causes the tests to fail when the Selenium server is unavailable.

用法

在nose测试类中定义类变量selenium_test = True。 您可以使用self.selenium访问具有给定 选项:

class TestSelenium(TestCase):

    selenium_test = True

    def test_start(self):
        """Tests the start page."""

        self.selenium.open("/")

要运行此测试,必须将选项--with-selenium传递给django 管理命令测试:

python manage.py test --with-selenium
另一方面,Django鼻硒提供了一种有利于 如果插件未加载并且selenium 属性被访问:

from noseselenium.cases import SeleniumTestCaseMixin


class TestSelenium(TestCase, SeleniumTestCaseMixin):

    def test_start(self):
        """Tests the start page."""

        self.selenium.open("/")

固定装置

django的默认fixture在事务中运行,对于 因此,live testing server提供了加载和 自动将fixture提交到数据库。请注意没有 自动回滚,因此数据将在测试数据库中保留 如果不提供自定义的拆卸策略,则运行。

from noseselenium.cases import SeleniumTestCaseMixin


class TestUserLogin(TestCase, SeleniumTestCaseMixin):

    selenium_fixtures = ['user_data.json']

    def tearDown(self):
        # Remove data from user_data.json

    def test_login(self):
        """Tests the login page."""

        sel = self.selenium
        sel.open("/login/")
        sel.type("id_username", "pascal")
        sel.type("id_password", "iwantapony")
        sel.click("//form[@id='myform']/p/button")
        sel.wait_for_page_to_load(5000)
        self.failUnless(self.is_text_present("Hello, Pascal!"))

要启用Selenium设备,必须使用 附加--with-selenium-fixtures标志。

liveserver

noselenium为运行实时服务器提供过期支持 硒可以连接到。目前,有一个线程服务器可以重用 django的开发web服务器和cherrypy实现。是推荐的 您使用cherrypy作为django devserver的目的肯定不是 在多线程环境中运行。

liveserver插件引入了两个新的配置选项:

  • LIVE_SERVER_ADDRESS, defaults to 0.0.0.0
  • LIVE_SERVER_PORT, defaults to 8080
  • LIVE_SERVER_STATIC, boolean that defaults to True. If enabled, the live server enables serving of static files via the ^{tt11}$ app.

这些应该与您的Selenium Settings匹配。

要启动liveserver,可以使用 --with-djangoliveserver或者最好是--with-cherrypyliveserver 旗帜。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java ParsePushReceiver参数   java如何从设备读取完整数据?   java将java_设置为home,但忽略错误   java如何从歌曲中对专辑进行排序?   java libnaude+windows 10 x64+Eclipse   java如何将maven目标更改为如图所示的想法中的quickicon?   java swing布局中心面板,可滚动显示多个窗口窗格   使用MOSQUITO代理的mqtt中的java SSL   java如何通过属性值获取XML字符串   java在服务器每次启动时停止GWT编译   java如何让javac搜索类路径的子目录?   可以比较java中的两个不同类吗?   JAVAAndroid活动内部类中的lang.NoClassDefFoundError   java HttpServletRequest获取请求头参数块   C++socket与java客户端的连接   java如何在Apache commons http客户端上使用SSL客户端证书   使用预编译正则表达式模式提高java速度   JavaRhino将两个已编译脚本合并为一个脚本