paste.fixture
– Test applications¶
Contents
paste.fixture
– Test applications
Routines for testing WSGI applications.
Most interesting is the TestApp for testing WSGI applications, and the TestFileEnvironment class for testing the effects of command-line scripts.
Module Contents¶
-
class
paste.fixture.
TestApp
(app, namespace=None, relative_to=None, extra_environ=None, pre_request_hook=None, post_request_hook=None)¶ -
delete
(url, params=b'', headers=None, extra_environ=None, status=None, expect_errors=False)¶ Do a DELETE request. Very like the
.get()
method.params
are put in the body of the request.Returns a response object
-
do_request
(req, status)¶ Executes the given request (
req
), with the expectedstatus
. Generally.get()
and.post()
are used instead.
-
encode_multipart
(params, files)¶ Encodes a set of parameters (typically a name/value list) and a set of files (a list of (name, filename, file_body)) into a typical POST body, returning the (content_type, body).
-
get
(url, params=None, headers=None, extra_environ=None, status=None, expect_errors=False)¶ Get the given url (well, actually a path like
'/page.html'
).params
:- A query string, or a dictionary that will be encoded
into a query string. You may also include a query
string on the
url
. headers
:- A dictionary of extra headers to send.
extra_environ
:- A dictionary of environmental variables that should be added to the request.
status
:- The integer status code you expect (if not 200 or 3xx).
If you expect a 404 response, for instance, you must give
status=404
or it will be an error. You can also give a wildcard, like'3*'
or'*'
. expect_errors
:- If this is not true, then if anything is written to
wsgi.errors
it will be an error. If it is true, then non-200/3xx responses are also okay.
Returns a response object
-
post
(url, params=b'', headers=None, extra_environ=None, status=None, upload_files=None, expect_errors=False)¶ Do a POST request. Very like the
.get()
method.params
are put in the body of the request.upload_files
is for file uploads. It should be a list of[(fieldname, filename, file_content)]
. You can also use just[(fieldname, filename)]
and the file content will be read from disk.Returns a response object
-
put
(url, params=b'', headers=None, extra_environ=None, status=None, upload_files=None, expect_errors=False)¶ Do a PUT request. Very like the
.get()
method.params
are put in the body of the request.upload_files
is for file uploads. It should be a list of[(fieldname, filename, file_content)]
. You can also use just[(fieldname, filename)]
and the file content will be read from disk.Returns a response object
-
reset
()¶ Resets the state of the application; currently just clears saved cookies.
-
-
class
paste.fixture.
TestRequest
(url, environ, expect_errors=False)¶
Forms¶
-
class
paste.fixture.
Form
(response, text)¶ This object represents a form that has been found in a page. This has a couple useful attributes:
text
:- the full HTML of the form.
action
:- the relative URI of the action.
method
:- the method (e.g.,
'GET'
). id
:- the id, or None if not given.
fields
:- a dictionary of fields, each value is a list of fields by
that name.
<input type="radio">
and<select>
are both represented as single fields with multiple options.
-
get
(name, index=None, default=<class 'paste.fixture.NoDefault'>)¶ Get the named/indexed field object, or
default
if no field is found.
-
select
(name, value, index=None)¶ Like
.set()
, except also confirms the target is a<select>
.
-
set
(name, value, index=None)¶ Set the given name, using
index
to disambiguate.
-
submit
(name=None, index=None, **args)¶ Submits the form. If
name
is given, then also select that button (usingindex
to disambiguate)``.Any extra keyword arguments are passed to the
.get()
or.post()
method.Returns a response object.
-
submit_fields
(name=None, index=None)¶ Return a list of
[(name, value), ...]
for the current state of the form.
-
class
paste.fixture.
Field
(form, tag, name, pos, value=None, id=None, **attrs)¶ Field object.
-
force_value
(value)¶ Like setting a value, except forces it even for, say, hidden fields.
-
-
class
paste.fixture.
Select
(*args, **attrs)¶ Field representing
<select>
-
class
paste.fixture.
Radio
(*args, **attrs)¶ Field representing
<input type="radio">
-
class
paste.fixture.
Checkbox
(*args, **attrs)¶ Field representing
<input type="checkbox">
-
class
paste.fixture.
Text
(form, tag, name, pos, value='', id=None, **attrs)¶ Field representing
<input type="text">
-
class
paste.fixture.
Textarea
(form, tag, name, pos, value='', id=None, **attrs)¶ Field representing
<textarea>
-
class
paste.fixture.
Hidden
(form, tag, name, pos, value='', id=None, **attrs)¶ Field representing
<input type="hidden">
-
class
paste.fixture.
Submit
(form, tag, name, pos, value=None, id=None, **attrs)¶ Field representing
<input type="submit">
and<button>
Script Testing¶
-
class
paste.fixture.
TestFileEnvironment
(base_path, template_path=None, script_path=None, environ=None, cwd=None, start_clear=True, ignore_paths=None, ignore_hidden=True)¶ This represents an environment in which files will be written, and scripts will be run.
-
clear
()¶ Delete all the files in the base directory.
-
run
(script, *args, **kw)¶ Run the command, with the given arguments. The
script
argument can have space-separated arguments, or you can use the positional arguments.Keywords allowed are:
expect_error
: (default False)- Don’t raise an exception in case of errors
expect_stderr
: (defaultexpect_error
)- Don’t raise an exception if anything is printed to stderr
stdin
: (default""
)- Input to the script
printresult
: (default True)- Print the result after running
cwd
: (defaultself.cwd
)- The working directory to run in
Returns a ProcResponse object.
-
writefile
(path, content=None, frompath=None)¶ Write a file to the given path. If
content
is given then that text is written, otherwise the file infrompath
is used.frompath
is relative toself.template_path
-
-
class
paste.fixture.
ProcResult
(test_env, args, stdin, stdout, stderr, returncode, files_before, files_after)¶ Represents the results of running a command in TestFileEnvironment.
Attributes to pay particular attention to:
-
class
paste.fixture.
FoundFile
(base_path, path)¶ Represents a single file found as the result of a command.
Has attributes:
path
:- The path of the file, relative to the
base_path
full
:- The full path
stat
:- The results of
os.stat
. Alsomtime
andsize
contain the.st_mtime
andst_size
of the stat. bytes
:- The contents of the file.
You may use the
in
operator with these objects (tested against the contents of the file), and the.mustcontain()
method.
-
class
paste.fixture.
FoundDir
(base_path, path)¶ Represents a directory created by a command.