parent
46ee6beaa9
commit
1dc9ac62ca
|
@ -5,11 +5,11 @@
|
|||
In version 1.0 py.test introduces a new mechanism for setting up test
|
||||
state for use by Python test functions. It is particularly useful
|
||||
for functional and integration testing but also for unit testing.
|
||||
Using funcargs you can:
|
||||
Using funcargs you can easily:
|
||||
|
||||
* write self-contained, simple to read and debug test functions
|
||||
* cleanly encapsulate glue code between your app and your tests
|
||||
* do test scenario setup dependent on command line opts or environment
|
||||
* setup test state depending on command line options or environment
|
||||
|
||||
Using the funcargs mechanism will increase readability
|
||||
and allow for easier refactoring of your application
|
||||
|
@ -18,15 +18,15 @@ and its test suites.
|
|||
The basic funcarg request/provide mechanism
|
||||
=============================================
|
||||
|
||||
All you need to do from a test function or test method
|
||||
is to specify an argument for your test function:
|
||||
To use funcargs you only need to specify
|
||||
a named argument for your test function:
|
||||
|
||||
.. sourcecode:: python
|
||||
|
||||
def test_function(myarg):
|
||||
# use myarg
|
||||
|
||||
For each test function that requests the ``myarg``
|
||||
For each test function that requests this ``myarg``
|
||||
argument a matching so called funcarg provider
|
||||
will be invoked. A Funcarg provider for ``myarg``
|
||||
is written down liks this:
|
||||
|
@ -40,11 +40,10 @@ Such a provider method can live on a test class,
|
|||
test module or on a local or global plugin.
|
||||
The method is recognized by the ``pytest_funcarg__``
|
||||
prefix and is correlated to the argument
|
||||
name which follows this prefix. Because it
|
||||
has access to the "request" object a provider
|
||||
method is a uniquely powerful place for
|
||||
containing setup up of test scenarios and
|
||||
test configuration.
|
||||
name which follows this prefix. The passed in
|
||||
"request" object allows to interact
|
||||
with test configuration, test collection
|
||||
and test running aspects.
|
||||
|
||||
.. _`request object`:
|
||||
|
||||
|
@ -55,11 +54,13 @@ Request objects give access to command line options,
|
|||
the underlying python function and the test running
|
||||
process. Each funcarg provider method receives a ``request`` object
|
||||
that allows interaction with the test method and test
|
||||
running process. Basic attributes::
|
||||
running process. Basic attributes of request objects:
|
||||
|
||||
argname: requested argument name
|
||||
function: python function object requesting the argument
|
||||
config: access to command line opts and general config
|
||||
``request.argname``: name of the request argument
|
||||
|
||||
``request.function``: python function object requesting the argument
|
||||
|
||||
``request.config``: access to command line opts and general config
|
||||
|
||||
Request objects have a ``addfinalizer`` method that
|
||||
allows to **register a finalizer method** which is
|
||||
|
@ -105,6 +106,15 @@ lookup order for provider methods:
|
|||
4. global plugins
|
||||
|
||||
|
||||
Using multiple funcargs
|
||||
----------------------------------------
|
||||
|
||||
A test function may receive more than one
|
||||
function arguments. For each of the
|
||||
function arguments a lookup of a
|
||||
matching provider will be performed.
|
||||
|
||||
|
||||
Funcarg Examples
|
||||
=====================
|
||||
|
||||
|
|
Loading…
Reference in New Issue