用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 旗帜。