[TIP] specifying testfile patterns / RFC

Kumar McMillan kumar.mcmillan at gmail.com
Wed Aug 12 13:18:29 PDT 2009


On Wed, Aug 12, 2009 at 1:33 PM, holger krekel<holger at merlinux.eu> wrote:
> Hi all,
>
> i am hacking on a new plugin to go into py.test-1.0.1 and i am
> doing that in documentation-driven style.  So i am interested
> in feedback and comments on the below soon-to-become reality
> "pytest_testfiles" plugin.

very cool!  Would be especially useful for autotest behavior using editor hooks.

>
> best & thanks,
> holger
>
> pytest_testfiles.py: determine test files for command line specified args.
> ===========================================================================
>
> usage example: specifying testfiles in a python module
> -----------------------------------------------------
>
> If you have a module ``mymodule.py`` you can specify test files like this::
>
>    # content of: mymodule.py
>
>    # relative paths
>    __testfiles__ = ['test/test_unittest.py', 'test/test_functional.py']
>
> and if you then type::
>
>    py.test mymodule.py
>
> then this will run the test files which were specified relatively
> to the directory of ``mymodule.py``.
>
> Ordering is significant: if you specify quick-running unit-tests
> first followed by slower running functional tests then issuing
> commands like ``py.test -x`` allows to find failures quickly
> and the easier-to-debug ones first.
>
>
> usage example: specifying project-specific testfile patterns
> --------------------------------------------------------------
>
> Suppose your project has this layout::
>
>    app/
>        sub1/
>            module1.py
>
>    tests/
>        unit/
>            test_module1.py
>        functional/
>            test_one.py
>            test_two.py
>
> you may specify filematching rules for finding tests like this::
>
>    # contents of: conftest.py
>    conf_testfilepatterns = ["{topdir}/tests/unit/test_{basename}",
>                             "{topdir}/tests/functional/*.py"]
>
> and if you then type::
>
>    py.test app/sub1/module1.py
>
> the specified testfile patterns will be applied to check if there are matching test files.  In our example we will run test files in the following order::
>
>    tests/unit/test_module.py
>    tests/functional/test_one.py
>    tests/functional/test_two.py
>
>
> default is to look for test files being close to code
> ----------------------------------------------------------
>
> If no ``conf_testfilepatterns`` are specified, py.test will use this
> as a default setting::
>
>    conf_testfilepatterns = [
>        "*/test_{purebasename}.py",
>        "**/test_*.py",
>        "**/*_test.py"
>    ]
>
> Note that each matching test file will only be run at most once.
>
> Substitutions
> -------------------
>
> The following substitutions are performed for each file-or-directory command line argument::
>
>    dirname        the dirname of the file
>    basename       basename of the file
>    purebasename   basename without the extension
>    topdir         first upwards parent directory not containing __init__.py
>
>
> _______________________________________________
> testing-in-python mailing list
> testing-in-python at lists.idyll.org
> http://lists.idyll.org/listinfo/testing-in-python
>



More information about the testing-in-python mailing list