Skip to main content

Integration of zope.testrunner-style test layers into py.test framework

Project description

The gocept.pytestlayer distribution

https://img.shields.io/pypi/v/gocept.pytestlayer.svg https://img.shields.io/pypi/pyversions/gocept.pytestlayer.svg https://travis-ci.com/gocept/gocept.pytestlayer.svg?branch=master https://coveralls.io/repos/github/gocept/gocept.pytestlayer/badge.svg?branch=master

Integration of zope.testrunner-style test layers into the py.test framework

This package is compatible with Python versions 2.7 and 3.5 - 3.8 including PyPy implementation. (To run its tests successfully you should use at least Python 2.7.4 because of a bug in earlier Python 2.7 versions.)

Quick start

  • Make sure your test files follow the conventions of py.test’s test discovery

    In particular, a file named tests.py will not be recognised.

  • Add a buildout section to create the py.test runner:

    [buildout]
    parts += pytest
    
    [pytest]
    recipe = zc.recipe.egg
    eggs = gocept.pytestlayer
           pytest
           <YOUR PACKAGE HERE>

gocept.pytestlayer registers itself as a py.test plugin. This way, nothing more is needed to run an existing Zope or Plone test suite.

Advanced usage

Version 2.1 reintroduced fixture.create() to be able to define the name of the generated to py.test fixtures. So it is possible to use them in function style tests.

Example (Code has to be in contest.py!):

from .testing import FUNCTIONAL_LAYER
import gocept.pytestlayer.fixture

globals().update(gocept.pytestlayer.fixture.create(
    FUNCTIONAL_LAYER,
    session_fixture_name='functional_session',
    class_fixture_name='functional_class',
    function_fixture_name='functional'))

This creates three fixtures with the given names and the scopes in the argument name. The session and class fixtures run setUp() and tearDown() of the layer if it has not been run before while the function fixture runs testSetUp() and testTearDown() of the layer. The function fixture depends on the session one. The fixtures return the instance of the layer. So you can use the functional fixture like this:

def test_mymodule__my_function__1(functional):
    assert functional['app'] is not None

Not supported use cases

  • Inheriting from a base class while changing the layer. See issue #5

  • Mixing classes inheriting unittest.TestCase and a test_suite() function (e. g. to create a DocTestSuite or a DocFileSuite) in a single module (aka file).

    • This is a limitation of the py.test test discovery which ignores the doctests in this case.

    • Solution: Put the classes and test_suite() into different modules.

  • A doctest.DocFileSuite which does not have a layer is silently skipped. Use the built-in doctest abilities of py.test to run those tests.

Developing gocept.pytestlayer

Author:

gocept <mail@gocept.com>, Godefroid Chapelle <gotcha@bubblenet.be>

PyPI page:

http://pypi.python.org/pypi/gocept.pytestlayer/

Issues:

https://github.com/gocept/gocept.pytestlayer/issues

Source code:

https://github.com/gocept/gocept.pytestlayer

Current change log:

https://raw.githubusercontent.com/gocept/gocept.pytestlayer/master/CHANGES.rst

Change log for gocept.pytestlayer

6.1 (2020-02-20)

  • Fix tests to run with pytest >= 4.2.0.

  • Migrate to Github.

  • Do not break when rerunning a doctest using pytest-rerunfailures.

  • Add support for Python 3.8.

6.0 (2018-10-24)

  • Add support for Python 3.6, 3.7 and PyPy3.

  • Drop support for Python 3.4.

  • Fix tests to run with pytest >= 3.9.1.

  • Release also as universal wheel.

  • Update to new pytest fixture API to avoid DeprecationWarnings. (#10)

5.1 (2016-12-02)

  • Make installation process compatible with setuptools >= 30.0.

5.0 (2016-08-23)

  • Fix tests to pass if pytest >= 3.0 is used for testing.

4.0 (2016-04-27)

  • Support Python 3.4, 3.5 and PyPy.

  • Use tox as testrunner.

3.0 (2016-04-14)

  • Claim compatibility with py.test 2.9.x.

  • Drop Python 2.6 support.

2.1 (2014-10-22)

  • Update handling of keywords and doctest testnames for py.test-2.5. [wosc]

  • Re-introduce gocept.pytestlayer.fixture.create() method, to allow giving created fixtures a non-random name, so other fixtures can depend on them. [tlotze, wosc]

  • Generate session-scoped fixtures from layers in addition to class-scoped ones, if a session-scoped one is required somewhere, the class-scoped ones are simply ignored. [tlotze, wosc]

2.0 (2013-09-19)

  • Remove need to explicitely create fixtures. [gotcha]

  • Add plone.testing.layered test suites support. [gotcha]

  • Made tests a bit more robust. [icemac]

1.0 (2013-08-28)

  • Initial release. [tlotze, icemac, gotcha]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gocept.pytestlayer-6.1.tar.gz (20.5 kB view details)

Uploaded Source

Built Distribution

gocept.pytestlayer-6.1-py2.py3-none-any.whl (36.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file gocept.pytestlayer-6.1.tar.gz.

File metadata

  • Download URL: gocept.pytestlayer-6.1.tar.gz
  • Upload date:
  • Size: 20.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/None requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.6

File hashes

Hashes for gocept.pytestlayer-6.1.tar.gz
Algorithm Hash digest
SHA256 3a1621951ff883213a838631d869a56cc8a7fed7b01ad6810353e99846734697
MD5 6f3a2aa75c306e5ec3e7ce90ab2f73ee
BLAKE2b-256 5c129ff4cb7ddeb3939c80bc327d16527f64e6ecf3779f49827cb45e553e5b96

See more details on using hashes here.

Provenance

File details

Details for the file gocept.pytestlayer-6.1-py2.py3-none-any.whl.

File metadata

  • Download URL: gocept.pytestlayer-6.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 36.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/None requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.6

File hashes

Hashes for gocept.pytestlayer-6.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 727388373b1d0858d0832dab99b5be93a523eed8656cfd0717afcc8b6a720e62
MD5 cf676c2cdb914089570851378acfe3ff
BLAKE2b-256 4af363ea801a07682d3606ad59846ebaa3de593dab3da659ce3331c0e2b838c2

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page