parent
							
								
									1dc9ac62ca
								
							
						
					
					
						commit
						ee78661775
					
				|  | @ -56,14 +56,13 @@ process.  Each funcarg provider method receives a ``request`` object | ||||||
| that allows interaction with the test method and test | that allows interaction with the test method and test | ||||||
| running process.  Basic attributes of request objects: | running process.  Basic attributes of request objects: | ||||||
| 
 | 
 | ||||||
| ``request.argname``: name of the request argument  | ``request.argname``: name of the requested function argument  | ||||||
| 
 | 
 | ||||||
| ``request.function``: python function object requesting the argument | ``request.function``: python function object requesting the argument | ||||||
| 
 | 
 | ||||||
| ``request.config``: access to command line opts and general config | ``request.config``: access to command line opts and general config | ||||||
| 
 | 
 | ||||||
| Request objects have a ``addfinalizer`` method that  | Request objects allow to **register a finalizer method** which is  | ||||||
| allows to **register a finalizer method** which is  |  | ||||||
| called after a test function has finished running.  | called after a test function has finished running.  | ||||||
| This is useful for tearing down or cleaning up | This is useful for tearing down or cleaning up | ||||||
| test state. Here is a basic example for providing | test state. Here is a basic example for providing | ||||||
|  | @ -78,8 +77,8 @@ function finish: | ||||||
|         return myfile |         return myfile | ||||||
| 
 | 
 | ||||||
| If you want to **decorate a function argument** that is  | If you want to **decorate a function argument** that is  | ||||||
| provided elsewhere you can use the ``call_next_provider`` | provided elsewhere you can ask the request object  | ||||||
| method to obtain the "next" value:  | to provide the "next" value: | ||||||
| 
 | 
 | ||||||
| .. sourcecode:: python | .. sourcecode:: python | ||||||
| 
 | 
 | ||||||
|  | @ -141,8 +140,8 @@ required "mysetup" function argument.  The test function simply | ||||||
| interacts with the provided application specific setup.  | interacts with the provided application specific setup.  | ||||||
| 
 | 
 | ||||||
| To provide the ``mysetup`` function argument we write down | To provide the ``mysetup`` function argument we write down | ||||||
| a provider method in a `local plugin`_ by putting this  | a provider method in a `local plugin`_ by putting the | ||||||
| into a local ``conftest.py``: | following code into a local ``conftest.py``: | ||||||
| 
 | 
 | ||||||
| .. sourcecode:: python | .. sourcecode:: python | ||||||
| 
 | 
 | ||||||
|  | @ -157,7 +156,7 @@ into a local ``conftest.py``: | ||||||
|             return MyApp() |             return MyApp() | ||||||
| 
 | 
 | ||||||
| The ``pytest_funcarg__mysetup`` method is called to  | The ``pytest_funcarg__mysetup`` method is called to  | ||||||
| provide a value for the test function argument.  | provide a value for the requested ``mysetup`` test function argument.  | ||||||
| To complete the example we put a pseudo MyApp object | To complete the example we put a pseudo MyApp object | ||||||
| into ``myapp.py``: | into ``myapp.py``: | ||||||
| 
 | 
 | ||||||
|  | @ -167,8 +166,13 @@ into ``myapp.py``: | ||||||
|         def question(self): |         def question(self): | ||||||
|             return 6 * 9 |             return 6 * 9 | ||||||
| 
 | 
 | ||||||
|  | You can now run the test with ``py.test test_sample.py``: | ||||||
|  | 
 | ||||||
|  | .. sourcecode:: python | ||||||
|  | 
 | ||||||
| .. _`local plugin`: ext.html#local-plugin | .. _`local plugin`: ext.html#local-plugin | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| Example: specifying funcargs in test modules or classes | Example: specifying funcargs in test modules or classes | ||||||
| --------------------------------------------------------- | --------------------------------------------------------- | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,10 @@ | ||||||
|  | 
 | ||||||
|  | from myapp import MyApp | ||||||
|  | 
 | ||||||
|  | class ConftestPlugin: | ||||||
|  |     def pytest_funcarg__mysetup(self, request): | ||||||
|  |         return MySetup() | ||||||
|  | 
 | ||||||
|  | class MySetup: | ||||||
|  |     def myapp(self): | ||||||
|  |         return MyApp() | ||||||
|  | @ -0,0 +1,5 @@ | ||||||
|  | 
 | ||||||
|  | class MyApp: | ||||||
|  |     def question(self): | ||||||
|  |         return 6 * 9 | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,5 @@ | ||||||
|  | 
 | ||||||
|  | def test_answer(mysetup):  | ||||||
|  |     app = mysetup.myapp() | ||||||
|  |     answer = app.question() | ||||||
|  |     assert answer == 42 | ||||||
		Loading…
	
		Reference in New Issue