Go to file
Jurko Gospodnetić 8e457338ee fix handling MarkDecorators called with a single positional plus keyword args
When a MarkDecorator instance is called it does the following:
  1. If called with a single class as its only positional argument and no
     additional keyword arguments, it attaches itself to the class so it gets
     applied automatically to all test cases found in that class.
  2. If called with a single function as its only positional argument and no
     additional keyword arguments, it attaches a MarkInfo object to the
     function, containing all the arguments already stored internally in the
     MarkDecorator.
  3. When called in any other case, it performs a 'fake construction' call, i.e.
     it returns a new MarkDecorator instance with the original MarkDecorator's
     content updated with the arguments passed to this call.

When Python applies a function decorator it always passes the target class/
function to the decorator as its positional argument with no additional
positional or keyword arguments. However, when MarkDecorator was deciding
whether it was being called to decorate a target function/class (cases 1. & 2.
as documented above) or to return an updated MarkDecorator (case 3. as
documented above), it only checked that it received a single callable positional
argument and did not take into consideration whether additional keyword
arguments were being passed in as well.

With this change, it is now possible to create a pytest mark storing a function/
class parameter passed as its only positional argument and accompanied by one or
more additional keyword arguments. Before, it was only possible to do so if the
function/class parameter argument was accompanied by at least one other
positional argument.

Added a related unit test.

Updated MarkDecorator doc-string.
2014-01-20 01:27:33 +01:00
_pytest fix handling MarkDecorators called with a single positional plus keyword args 2014-01-20 01:27:33 +01:00
bench replace py.test module references with pytest 2014-01-18 12:31:33 +01:00
doc fix doc typo 2014-01-19 10:26:55 +01:00
extra fix issue221 - handle importing of namespace-package with no 2013-11-20 21:04:19 +01:00
testing fix handling MarkDecorators called with a single positional plus keyword args 2014-01-20 01:27:33 +01:00
.gitignore .gitignore: Removed *.html rule 2013-12-12 18:48:09 +01:00
.hgignore ignores 2013-08-14 10:09:02 +02:00
.hgtags Added tag 2.5.1 for changeset 039d543d1ca0 2013-12-17 10:52:03 +01:00
.travis.yml only force tox to upgrade 2013-09-07 20:23:44 +02:00
AUTHORS add changelog entry: PR90: add --color=yes|no|auto option to force terminal coloring 2013-12-08 20:25:36 +01:00
CHANGELOG fix name 2014-01-19 09:13:06 +01:00
ISSUES.txt replace py.test module references with pytest 2014-01-18 12:31:33 +01:00
LICENSE * use the MIT license for the py lib 2009-10-03 01:11:04 +02:00
MANIFEST.in fix manifest 2013-08-15 13:05:01 +02:00
README.rst Merged in jurko/pytest (pull request #100) 2014-01-18 14:51:53 +01:00
plugin-test.sh add pluginmanager.do_configure(config) as a link to 2013-10-04 11:36:45 +02:00
pytest.py some more separation of core pluginmanager from pytest specific functionality. 2013-09-30 13:14:14 +02:00
setup.cfg add setup.cfg for building sphinx_docs 2013-10-03 12:35:13 +02:00
setup.py replace py.test module references with pytest 2014-01-18 12:31:33 +01:00
tox.ini remove py25 from automated testing 2013-12-12 08:16:16 +01:00

README.rst

Documentation: http://pytest.org/latest/

Changelog: http://pytest.org/latest/changelog.html

Issues: https://bitbucket.org/hpk42/pytest/issues?status=open

The ``pytest`` testing tool makes it easy to write small tests, yet
scales to support complex functional testing.  It provides

- `auto-discovery
  <http://pytest.org/latest/goodpractises.html#python-test-discovery>`_
  of test modules and functions,
- detailed info on failing `assert statements <http://pytest.org/latest/assert.html>`_ (no need to remember ``self.assert*`` names)
- `modular fixtures <http://pytest.org/latest/fixture.html>`_  for
  managing small or parametrized long-lived test resources.
- multi-paradigm support: you can use ``pytest`` to run test suites based
  on `unittest <http://pytest.org/latest/unittest.html>`_ (or trial),
  `nose <http://pytest.org/latest/nose.html>`_
- single-source compatibility to Python2.5 all the way up to Python3.3,
  PyPy-1.9 and Jython-2.5.1.

- many `external plugins <http://pytest.org/latest/plugins.html#installing-external-plugins-searching>`_.

A simple example for a test::

    # content of test_module.py
    def test_function():
        i = 4
        assert i == 3

which can be run with ``py.test test_module.py``.  See `getting-started <http://pytest.org/latest/getting-started.html#our-first-test-run>`_ for more examples.

For much more info, including PDF docs, see

    http://pytest.org

and report bugs at:

    http://bitbucket.org/hpk42/pytest/issues/

and checkout repos at:

    http://github.com/hpk42/pytest/ (mirror)
    http://bitbucket.org/hpk42/pytest/


Copyright Holger Krekel and others, 2004-2013
Licensed under the MIT license.