Robot-Framework

Das Robot Framework ist ein generisches Framework zur Durchführung von automatisierten Softwaretests, v.a. Akzeptanztests.

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

  1. 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}
    
  2. 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:

    Robot log