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.
Release files for dualtest 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dualtest-1.0.1.tar.gz | 5.9 kB | Details |
Release files / dualtest-1.0.1.tar.gz
| Download URL | dualtest-1.0.1.tar.gz |
|---|---|
| Size | 5.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a6429c0946f936d7a5cdf74681a36fe0630bce0edde9cf1ce2764db4d827d3ca
|
|
BLAKE2b-256 checksum How to use checksums |
7f1ccebe9c8ab0303d7fd6af6ecce3c846bc09073056cc3a8f5d79dc7ced9d36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|