The zc.buildout.testing module provides an API that can be used when writing recipe tests. This API is documented below. Many examples of using this API can be found in the zc.buildout, zc.recipe.egg, and zc.recipe.testrunner tests.
The buildoutSetup function can be used as a doctest setup function. It creates a sample buildout that can be used by tests, changing the current working directory to the sample_buildout. It also adds a number of names to the test namespace:
Display the contents of a file. The file path is provided as one or more strings, to be joined with os.path.join.
On Windows, if the file doesn’t exist, the function will try adding a ‘-script.py’ suffix. This helps to work around a difference in script generation on windows.
Create a temporary directory with the given name. The directory will be automatically removed at the end of the test. The path of the created directory is returned.
Further, if the the normalize_path normalizing substitution (see below) is used, then any paths starting with this path will be normalized to:
/name/restofpath
No two temporary directories can be created with the same name. A directory created with tmpdir can be removed with rmdir and recreated.
Note that the sample_buildout directory is created by calling this function.
Change to the given directory. The directory path is provided as one or more strings, to be joined with os.path.join.
The directory will be reset at the end of the test.
Start a web server on the given path. The server will be shut down at the end of the test. The server URL is returned.
You can cause the server to start and stop logging it’s output using:
>>> get(server_url+'enable_server_logging')
and:
>>> get(server_url+'disable_server_logging')
This can be useful to see how buildout is interacting with a server.
Tear down everything set up by zc.buildout.testing.buildoutSetUp. Any functions passed to register_teardown are called as well.
Install eggs for a given project into a destination. If the destination is a test object, then the eggs directory of the sample buildout (sample_buildout) defined by the test will be used. Tests will use this to install the distributions for the packages being tested (and their dependencies) into a sample buildout. The egg to be used should already be loaded, by importing one of the modules provided, before calling this function.
Like install, but a develop egg is installed even if the current egg if not a develop egg.
Recipe tests often generate output that is dependent on temporary file locations, operating system conventions or Python versions. To deal with these dependencies, we often use zope.testing.renormalizing.RENormalizing to normalize test output. zope.testing.renormalizing.RENormalizing takes pairs of regular expressions and substitutions. The zc.buildout.testing module provides a few helpful variables that define regular-expression/substitution pairs that you can pass to zope.testing.renormalizing.RENormalizing.