Skip to main content

Easily test both Python and C versions of modules.

Project description

When you write a C extension, you can provide a Python version as a backup. A problem with this is that only one of these modules will be tested, while the other is neglected.

DualTest provides a class that, when inherited from, imports a list of modules and attributes from modules and makes them available as globals during tests. Allowing you to easily test both versions of a module and write just one set of tests.

Usage

Create a test case class derived from DualTestCase and set the import_names or import_from_names class attributes.

import_names should be set to a list of the names of modules with Python source and C extension versions to import:

class ImportTestCase(DualTestCase):
    import_names = ['mod1', 'mod2']

    def test_something(self):
        # mod1 and mod2 will be available here.

import_from_names causes attributes to be imported from modules just like from module import attribute would. It should be set to a list of tuples containing the name of the module to import from, and a list of attribute names to import. If one of the attribute names is “*”, then all public attributes are imported:

class ImportFromTestCase(DualTestCase):
    import_from_names = [
        ('mod1', ['attr1', 'attr2']),
        # "*" causes all public attributes to be imported.
        ('mod2', ['*']),
        ]

    def test_something(self):
        # attr1, attr2 and everything from mod2 will be available here.

Full Example

from dualtest import DualTestCase


class ImportTestCase(DualTestCase):
    import_names = ['mod1', 'mod2']

    def test_something(self):
        # mod1 and mod2 will be available here.


class ImportFromTestCase(DualTestCase):
    import_from_names = [
        ('mod1', ['attr1', 'attr2']),
        # "*" causes all public attributes to be imported.
        ('mod2', ['*']),
        ]

    def test_something(self):
        # attr1, attr2 and everything from mod2 will be available here.

Changelog

1.0.1

  • Patch imported modules into “sys.modules” during tests.

  • Fix error when “import_from_names” references a non-existing module.

  • Fix bug when importing ‘*’ from a module.

  • Add module type context when “subTest” is called.

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

dualtest-1.0.1.tar.gz (5.9 kB view details)

Uploaded Source

File details

Details for the file dualtest-1.0.1.tar.gz.

File metadata

  • Download URL: dualtest-1.0.1.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.8

File hashes

Hashes for dualtest-1.0.1.tar.gz
Algorithm Hash digest
SHA256 a6429c0946f936d7a5cdf74681a36fe0630bce0edde9cf1ce2764db4d827d3ca
MD5 ff419a71afee1118e7d751ebfddd731a
BLAKE2b-256 7f1ccebe9c8ab0303d7fd6af6ecce3c846bc09073056cc3a8f5d79dc7ced9d36

See more details on using hashes here.

Supported by

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