Robot verwendet für das Keyword- Driven Testing eine tabellenartige Struktur zur Verwaltung der Testdaten.
Selenium2Library ermöglicht, die Selenium 2 (WebDriver)-Bibliothek im Robot-Framework zu verwenden.
Weitere Informationen zur Selenium2Library finden Sie im Wiki.
Installation
Beim Erstellen eines neuen Pakets sollte darauf geachtet werden, dass bei der Frage nach robot tests mit true geantwortet wird:
$ ../bin/zopeskel plone_basic vs.registration … Expert Mode? (What question mode would you like? (easy/expert/all)?) ['easy']: all … robot tests (should the default robot test be included) [false]: true
Bei einem bestehenden Paket sollte folgendes in die setup.py-Datei eingetragen werden:
extras_require={ 'test': ['plone.app.testing[robot]>=4.2.2'] },
Damit wird neben plone.app.testing noch die robotsuite und die robotframework- selenium2library zum Testen installiert.
Zudem ist in vs_buildout/src/vs.registration/src/vs/registration/tests/ eine test_robot.py-Datei angelegt worden mit:
from vs.registration.testing import VS_REGISTRATION_FUNCTIONAL_TESTING from plone.testing import layered import robotsuite import unittest def test_suite(): suite = unittest.TestSuite() suite.addTests([ layered(robotsuite.RobotTestSuite("robot_test.txt"), layer=VS_REGISTRATION_FUNCTIONAL_TESTING) ]) return suite
Die zugehörige robot_test.txt-Datei sieht dann so aus:
*** Settings *** Library Selenium2Library timeout=10 implicit_wait=0.5 Suite Setup Start browser Suite Teardown Close All Browsers *** Variables *** ${BROWSER} = firefox *** Test Cases *** Plone site [Tags] start Go to http://localhost:55001/plone/ Page should contain Plone site *** Keywords *** Start browser Open browser http://localhost:55001/plone/ browser=${BROWSER}
Schließlich kann der Test aufgerufen werden mit:
$ cd vs_buildout/src/vs.registration $ python bootstrap.py $ ./bin/buildout $ ./bin/test Running vs.registration.testing.VsregistrationLayer:Functional tests: Set up plone.testing.zca.LayerCleanup in 0.000 seconds. Set up plone.testing.z2.Startup in 0.394 seconds. Set up plone.app.testing.layers.PloneFixture in 10.463 seconds. Set up vs.registration.testing.VsregistrationLayer in 0.464 seconds. Set up plone.testing.z2.ZServer in 0.503 seconds. Set up vs.registration.testing.VsregistrationLayer:Functional in 0.000 seconds. Running: Ran 1 tests with 0 failures and 0 errors in 3.026 seconds. Running vs.registration.testing.VsregistrationLayer:Integration tests: Tear down vs.registration.testing.VsregistrationLayer:Functional in 0.000 seconds. Tear down plone.testing.z2.ZServer in 5.152 seconds. Set up vs.registration.testing.VsregistrationLayer:Integration in 0.000 seconds. Running: Ran 1 tests with 0 failures and 0 errors in 0.004 seconds. Tearing down left over layers: Tear down vs.registration.testing.VsregistrationLayer:Integration in 0.000 seconds. Tear down vs.registration.testing.VsregistrationLayer in 0.002 seconds. Tear down plone.app.testing.layers.PloneFixture in 0.092 seconds. Tear down plone.testing.z2.Startup in 0.007 seconds. Tear down plone.testing.zca.LayerCleanup in 0.004 seconds. Total: 2 tests, 0 failures, 0 errors in 20.510 seconds.
Daneben werden noch Log-Dateien erstellt in parts/test/, z.B. robot_log.html:
Weitere Informationen
- Asko Soukka: Getting started with Robot Framework and plone.app.testing
- plone.act documentation
- Asko Soukka: Meet the Robot family (for Plone developers)
- Writing Robot Framework tests for Plone
- Beispiele:
- plone.act Robot-Framework-Ressourcen zum Testen von Plone
- plone.app.toolbar
- plone.app.deco
- plone.app.collection
- Selenium2Library keywords
- Robot Framework built-in keywords