Acceptance testing a CherryPy application with Robot Framework

I recently received the Python Testing Cookbook authored by Greg L. Turnquist and was happy to read about recipes on acceptance testing using Robot Framework. We’ve been using this tool at work for a few weeks now with great results. Greg shows how to test a web application using the Selenium Library extension for Robot Framework and I thought it’d be fun to demonstrate how to test a CherryPy application following his recipe. So here we go.

First some requirements:

Let’s define a simple CherryPy application, which displays a input text where to type a message. When the submit button is pressed, the message is sent to the server and returned as-is. Well it’s an echo message really.

Save the code above in a module named

Next, we create an extension to Robot Framework that will manage CherryPy. Save the following in a module It’s important to respect that name since Robot Framework expects the module and its class to match in names.

Note that we start and stop the CherryPy server during the test itself, meaning you don’t need to start it separately. Pure awesomeness.

Finally let’s write a straightforward acceptance test to validate the overall workflow of echoing a message using our little application.

Save the test above into a file named testmyapp.txt. You can finally run the test as follow:

This will start CherryPy, Selenium’s proxy server and Firefox within which the test case will be run. Easy, elegant and powerful.

5 thoughts on “Acceptance testing a CherryPy application with Robot Framework”

  1. Hi, when I run the case with pybot the program stays waiting for some input (I think) but I don’t know how to do it go further.
    Thanks for the tut!

  2. Hey Anler,

    It’s difficult to tell why it’s hanging. You may want to enable the logging through cherrypy.config.update so that it shows you what might be going on in CherryPy. Assuming it’s where the problem lies.

    Otherwise, could well be a difference in one of your package version (Python, CherryPy, RobotFramework).

  3. Great post! I was looking something like this for testing my CherryPy apps.

    A hint for those who try the example: it seems Robot Framework is “fickle” (precise is probably a better word) in the spacing the test file (“testmyapp.txt”) above. If you have issues, try replacing spaces in the variables with tabs till works.

  4. @Ryan

    It may be hard to notice, but Robot Framework needs at least two spaces to “see” a break from one cell to the next. Tabs are also viable.

    This was a keen issue I had to overcome in typesetting my book, and I tried to include enough extra notes so the reader didn’t get lost in that.

Comments are closed.