Skip to main content

Make sure both 'python -m pytest' and 'pytest' run your tests.

Project description

Run a series of test invocation making sure each test case works with both 'pytest' and 'python -m pytest' over all working directories between the project root and the directory containing the test script.

├─ src
│
│<-- # run selected __main__'s from this working directory
│
│  └─ __init__.py
│  └─ foo.py
│  ├─ bar
│  │   └─ __init__.py
│  │   └─ bar.py
│  │
│  │<-- # run selected __main__'s from this working directory
│  │
│  └─ run_foo_main.py
│  └─ run_bar_main.py
│
│<-- # run selected test cases from this working directory
│
├─ tests
│  │
│  │<-- # run selected test cases from this working directory
│  │
│  └─ test_foo.py
│  └─ bar
│        │<-- # run selected bar test cases from this working directory
│        │
│        └─ test_bar.py
└─ setup.py

Your run_all_my_tests.py:

from run_all_the_tests import TestCasePath, TestCase, Group, TestType

if __name__ == '__main__': 
    project_path: PurePath = Path(__file__).absolute().parent.parent


    def gen_test_case_path(test_case: str) -> TestCasePath:
        return TestCasePath(project_path, PurePath(test_case))


    all_test_cases: Tuple[TestCase, ...] = (
        TestCase.gen_test_case(gen_test_case_path('tests/test_foo.py')),
        TestCase.gen_test_case(gen_test_case_path('tests/bar/test_bar.py')),
    )

    run_all_tests(all_test_cases)

Each set of tests are run in parallel within Group.ONE. Designate tests to run within non-conflicting groups of parallel runs by assigning all test cases that can run without conflict to the same Group.

    all_test_cases: Tuple[TestCase, ...] = (
        TestCase.gen_test_case(gen_test_case_path('tests/test_foo.py')),
        TestCase.gen_test_case(gen_test_case_path('tests/bar/test_bar.py'), Group.TWO),
    )

TestCase.gen_test_case() also supports the following agrs:

    pytest_filter: str = None
    :param pytest_filter: pytest -k string
 
    test_types: Tuple[TestType, ...] = TestType.all_test_types()
    :param test_types: for exceptional situations, limit a TestCase to run for limited set of TestType's

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

run-all-the-tests-0.1.21.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

run_all_the_tests-0.1.21-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file run-all-the-tests-0.1.21.tar.gz.

File metadata

  • Download URL: run-all-the-tests-0.1.21.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.0b2 CPython/3.7.9 Darwin/19.6.0

File hashes

Hashes for run-all-the-tests-0.1.21.tar.gz
Algorithm Hash digest
SHA256 86ca2252aa50f7a18a41558213a001ee16ea1e98bd3aaaf7aadcd8c54481d0d1
MD5 e1fd4f4c804cb03145349744901e414a
BLAKE2b-256 ae5f37f4e20938dbf0a37ec6142c1442da4a277c75dd0955acee09a9dd9e5bb2

See more details on using hashes here.

File details

Details for the file run_all_the_tests-0.1.21-py3-none-any.whl.

File metadata

File hashes

Hashes for run_all_the_tests-0.1.21-py3-none-any.whl
Algorithm Hash digest
SHA256 5dcf22816e9695ab6df5a84fbff75d8d41602439be07339c44bd10b4d19184f0
MD5 f280581567473289abd07e7a8148c810
BLAKE2b-256 5937e1c0f819a53fb6c6c79ee068b1469c9c81abaae1e820b320dbdbee404730

See more details on using hashes here.

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