add new "parametrize refinement" issue critical for 2.2 series

also cleanup issues a bit and make a note on xUnit/funcargs collaboration
This commit is contained in:
holger krekel 2011-12-01 12:23:28 +00:00
parent d15ee2fb87
commit d965101f6a
1 changed files with 53 additions and 41 deletions

View File

@ -1,3 +1,24 @@
refine parametrize API in 2.2 series
-------------------------------------------------------------
tags: critical feature 2.2
extend metafunc.parametrize to better support indirection
by specifying a setupfunc(request, val) which will _substitute_
the funcarg factory. Here is an example:
def setupdb(request, val):
# setup "resource" based on test request and the values passed
# in to parametrize. setupfunc is called for each such value.
# you may use request.addfinalizer() or request.cached_setup ...
return db
@pytest.mark.parametrize("db", ["pg", "mysql"], setupfunc=setupdb)
def test_heavy_functional_test(db):
...
There would be no need to write funcarg factories for this example, only
to explain the attributes and functionality of "request".
checks / deprecations for next release checks / deprecations for next release
--------------------------------------------------------------- ---------------------------------------------------------------
tags: bug 2.4 core xdist tags: bug 2.4 core xdist
@ -27,7 +48,7 @@ teardown.
do early-teardown of test modules do early-teardown of test modules
----------------------------------------- -----------------------------------------
tags: feature 2.2 tags: feature 2.3
currently teardowns are called when the next tests is setup currently teardowns are called when the next tests is setup
except for the function/method level where interally except for the function/method level where interally
@ -39,7 +60,7 @@ prints of teardown-code appear in the setup of the next test.
consider and document __init__ file usage in test directories consider and document __init__ file usage in test directories
--------------------------------------------------------------- ---------------------------------------------------------------
tags: bug 2.2 core tags: bug 2.3 core
Currently, a test module is imported with its fully qualified Currently, a test module is imported with its fully qualified
package path, determined by checking __init__ files upwards. package path, determined by checking __init__ files upwards.
@ -54,7 +75,7 @@ certain scenarios makes sense.
relax requirement to have tests/testing contain an __init__ relax requirement to have tests/testing contain an __init__
---------------------------------------------------------------- ----------------------------------------------------------------
tags: feature 2.2 tags: feature 2.3
bb: http://bitbucket.org/hpk42/py-trunk/issue/64 bb: http://bitbucket.org/hpk42/py-trunk/issue/64
A local test run of a "tests" directory may work A local test run of a "tests" directory may work
@ -65,7 +86,7 @@ i.e. port the nose-logic of unloading a test module.
customize test function collection customize test function collection
------------------------------------------------------- -------------------------------------------------------
tags: feature 2.2 tags: feature 2.3
- introduce py.test.mark.nocollect for not considering a function for - introduce py.test.mark.nocollect for not considering a function for
test collection at all. maybe also introduce a py.test.mark.test to test collection at all. maybe also introduce a py.test.mark.test to
@ -74,7 +95,7 @@ tags: feature 2.2
introduce pytest.mark.importorskip introduce pytest.mark.importorskip
------------------------------------------------------- -------------------------------------------------------
tags: feature 2.2 tags: feature 2.3
in addition to the imperative pytest.importorskip also introduce in addition to the imperative pytest.importorskip also introduce
a pytest.mark.importorskip so that the test count is more correct. a pytest.mark.importorskip so that the test count is more correct.
@ -82,7 +103,7 @@ a pytest.mark.importorskip so that the test count is more correct.
introduce py.test.mark.platform introduce py.test.mark.platform
------------------------------------------------------- -------------------------------------------------------
tags: feature 2.2 tags: feature 2.3
Introduce nice-to-spell platform-skipping, examples: Introduce nice-to-spell platform-skipping, examples:
@ -99,7 +120,7 @@ interpreter versions.
pytest.mark.xfail signature change pytest.mark.xfail signature change
------------------------------------------------------- -------------------------------------------------------
tags: feature 2.2 tags: feature 2.3
change to pytest.mark.xfail(reason, (optional)condition) change to pytest.mark.xfail(reason, (optional)condition)
to better implement the word meaning. It also signals to better implement the word meaning. It also signals
@ -109,7 +130,7 @@ Compatibility? how to introduce a new name/keep compat?
introduce py.test.mark registration introduce py.test.mark registration
----------------------------------------- -----------------------------------------
tags: feature 2.2 tags: feature 2.3
introduce a hook that allows to register a named mark decorator introduce a hook that allows to register a named mark decorator
with documentation and add "py.test --marks" to get with documentation and add "py.test --marks" to get
@ -118,7 +139,7 @@ definitions.
allow to non-intrusively apply skipfs/xfail/marks allow to non-intrusively apply skipfs/xfail/marks
--------------------------------------------------- ---------------------------------------------------
tags: feature 2.2 tags: feature 2.3
use case: mark a module or directory structures use case: mark a module or directory structures
to be skipped on certain platforms (i.e. no import to be skipped on certain platforms (i.e. no import
@ -129,14 +150,14 @@ from conftests or plugins.
explicit referencing of conftest.py files explicit referencing of conftest.py files
----------------------------------------- -----------------------------------------
tags: feature 2.2 tags: feature 2.3
allow to name conftest.py files (in sub directories) that should allow to name conftest.py files (in sub directories) that should
be imported early, as to include command line options. be imported early, as to include command line options.
improve central py.test ini file improve central py.test ini file
---------------------------------- ----------------------------------
tags: feature 2.2 tags: feature 2.3
introduce more declarative configuration options: introduce more declarative configuration options:
- (to-be-collected test directories) - (to-be-collected test directories)
@ -147,33 +168,16 @@ introduce more declarative configuration options:
new documentation new documentation
---------------------------------- ----------------------------------
tags: feature 2.2 tags: feature 2.3
- logo py.test - logo py.test
- examples for unittest or functional testing - examples for unittest or functional testing
- resource management for functional testing - resource management for functional testing
- patterns: page object - patterns: page object
- parametrized testing
- better / more integrated plugin docs
generalize parametrized testing to generate combinations
-------------------------------------------------------------
tags: feature 2.2
think about extending metafunc.addcall or add a new method to allow to
generate tests with combinations of all generated versions - what to do
about "id" and "param" in such combinations though?
introduce py.test.mark.multi
-----------------------------------------
tags: feature 1.3
introduce py.test.mark.multi to specify a number
of values for a given function argument.
have imported module mismatch honour relative paths have imported module mismatch honour relative paths
-------------------------------------------------------- --------------------------------------------------------
tags: bug 2.2 tags: bug 2.3
With 1.1.1 py.test fails at least on windows if an import With 1.1.1 py.test fails at least on windows if an import
is relative and compared against an absolute conftest.py is relative and compared against an absolute conftest.py
@ -181,7 +185,7 @@ path. Normalize.
call termination with small timeout call termination with small timeout
------------------------------------------------- -------------------------------------------------
tags: feature 2.2 tags: feature 2.3
test: testing/pytest/dist/test_dsession.py - test_terminate_on_hanging_node test: testing/pytest/dist/test_dsession.py - test_terminate_on_hanging_node
Call gateway group termination with a small timeout if available. Call gateway group termination with a small timeout if available.
@ -189,7 +193,7 @@ Should make dist-testing less likely to leave lost processes.
consider globals: py.test.ensuretemp and config consider globals: py.test.ensuretemp and config
-------------------------------------------------------------- --------------------------------------------------------------
tags: experimental-wish 2.2 tags: experimental-wish 2.3
consider deprecating py.test.ensuretemp and py.test.config consider deprecating py.test.ensuretemp and py.test.config
to further reduce py.test globality. Also consider to further reduce py.test globality. Also consider
@ -198,7 +202,7 @@ a plugin rather than being there from the start.
consider allowing funcargs for setup methods consider allowing funcargs for setup methods
-------------------------------------------------------------- --------------------------------------------------------------
tags: experimental-wish 2.2 tags: experimental-wish 2.3
Users have expressed the wish to have funcargs available to setup Users have expressed the wish to have funcargs available to setup
functions. Experiment with allowing funcargs there - it might functions. Experiment with allowing funcargs there - it might
@ -208,13 +212,20 @@ factories with a request object that not have a cls/function
attributes. However, how to handle parametrized test functions attributes. However, how to handle parametrized test functions
and funcargs? and funcargs?
setup_function -> request can be like it is now maybe introduce a setup method like:
setup_class -> request has no request.function
setup_module -> request has no request.cls setup_invocation(self, request)
which has full access to the test invocation through "request"
through which you can get funcargvalues, use cached_setup etc.
Therefore, the access to funcargs would be indirect but it
could be consistently implemented. setup_invocation() would
be a "glue" function for bringing together the xUnit and funcargs
world.
consider pytest_addsyspath hook consider pytest_addsyspath hook
----------------------------------------- -----------------------------------------
tags: 2.2 tags: 2.3
py.test could call a new pytest_addsyspath() in order to systematically py.test could call a new pytest_addsyspath() in order to systematically
allow manipulation of sys.path and to inhibit it via --no-addsyspath allow manipulation of sys.path and to inhibit it via --no-addsyspath
@ -226,7 +237,7 @@ and pytest_configure.
show plugin information in test header show plugin information in test header
---------------------------------------------------------------- ----------------------------------------------------------------
tags: feature 2.2 tags: feature 2.3
Now that external plugins are becoming more numerous Now that external plugins are becoming more numerous
it would be useful to have external plugins along with it would be useful to have external plugins along with
@ -234,7 +245,7 @@ their versions displayed as a header line.
deprecate global py.test.config usage deprecate global py.test.config usage
---------------------------------------------------------------- ----------------------------------------------------------------
tags: feature 2.2 tags: feature 2.3
py.test.ensuretemp and py.test.config are probably the last py.test.ensuretemp and py.test.config are probably the last
objects containing global state. Often using them is not objects containing global state. Often using them is not
@ -244,7 +255,7 @@ as others.
remove deprecated bits in collect.py remove deprecated bits in collect.py
------------------------------------------------------------------- -------------------------------------------------------------------
tags: feature 2.2 tags: feature 2.3
In an effort to further simplify code, review and remove deprecated bits In an effort to further simplify code, review and remove deprecated bits
in collect.py. Probably good: in collect.py. Probably good:
@ -253,7 +264,7 @@ in collect.py. Probably good:
implement fslayout decorator implement fslayout decorator
--------------------------------- ---------------------------------
tags: feature tags: feature 2.3
Improve the way how tests can work with pre-made examples, Improve the way how tests can work with pre-made examples,
keeping the layout close to the test function: keeping the layout close to the test function:
@ -272,3 +283,4 @@ def test_run(pytester, fslayout):
assert result.ret == 0 assert result.ret == 0
assert result.passed == 1 assert result.passed == 1