Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

104 lines (70 sloc) 2.84 KB

Adding Tests

We will now add tests for the models and the views and a few functional tests in the Tests ensure that an application works, and that it continues to work after changes are made in the future.

The source code for this tutorial stage can be browsed at

Testing the Models

To test the model class Page we'll add a new PageModelTests class to our file that was generated as part of the alchemy scaffold.

Testing the Views

We'll modify our file, adding tests for each view function we added above. As a result, we'll delete the ViewTests class that the alchemy scaffold provided, and add four other test classes: ViewWikiTests, ViewPageTests, AddPageTests, and EditPageTests. These test the view_wiki, view_page, add_page, and edit_page views respectively.

Functional tests

We'll test the whole application, covering security aspects that are not tested in the unit tests, like logging in, logging out, checking that the viewer user cannot add or edit pages, but the editor user can, and so on.

Viewing the results of all our edits to

Once we're done with the module, it will look a lot like:

Running the Tests

We can run these tests by using test in the same way we did in :ref:`running_tests`. However, first we must edit our to include a dependency on WebTest, which we've used in our Change the requires list in to include WebTest.

After we've added a dependency on WebTest in, we need to rerun develop to get WebTest installed into our virtualenv. Assuming our shell's current working directory is the "tutorial" distribution directory:


$ ../bin/python develop

On Windows:

c:\pyramidtut\tutorial> ..\Scripts\python develop

Once that command has completed successfully, we can run the tests themselves:


$ ../bin/python test -q

On Windows:

c:\pyramidtut\tutorial> ..\Scripts\python test -q

The expected result ends something like:

Ran 21 tests in 2.700s

Jump to Line
Something went wrong with that request. Please try again.