Skip to main content

A pytest module for very basic statistical tests. Repeat test multiple times and pass if the underlying test passes a threshold.

Project description

Tests & Lint PyPI PyPI - Downloads License

Introduction

Pytest plugin to repeat tests and pass if the test passes a number of times out of a total.

Purpose

I want to leverage pytest for model evaluation in a way that can be readily incorporated into CI/CD flows.

(Also consider giving pytest-repeat a look - I wrote pytest-repeated for statistical testing, as in, there are situations where one or two failures out of a hundred is acceptable.)

Installation

pip install pytest-repeated

🚀 Usage Example

@pytest.mark.repeated(times=4, threshold=2)
def test_example_fail_once():
    import random
    assert random.choice([True, False])  # may pass or fail

This test will run four times and pass if we get True in at least two of the four iterations.

🛠️ Development

The only requirement is 🐳 Docker. (The .devcontainer and tasks.json are prepared assuming a *nix system, but if you know the commands, this will work on Windows, too.)

  1. Clone the repo.
  2. Branch out.
  3. Open in "devcontainer" on VS Code and start developing. Run pytest under tests to test.
  4. Akternatively, if you are a fan of Test-Driven Development like me, you can run the tests without getting on a container. .vscode/tasks.json has the command to do so, but it's also listed here:
docker compose -f tests/docker-compose.yaml up --build --abort-on-container-exit --exit-code-from test
  1. When satisfied, push and open a PR. The pipeline will publish automatically when your PR is merged.

Future Plans

  • Better statistical measures
  • Optimized testing - stop conditions.
  • Sequential testing.
  • Ability to set the seed.
  • Report and fail on speed

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

pytest_repeated-0.2.2.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytest_repeated-0.2.2-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file pytest_repeated-0.2.2.tar.gz.

File metadata

  • Download URL: pytest_repeated-0.2.2.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pytest_repeated-0.2.2.tar.gz
Algorithm Hash digest
SHA256 88f62fe2577116eed7e753af525996838379e53f20a41412dd171bd9d509a9e7
MD5 2aece9d927f6a568618abd089de9593b
BLAKE2b-256 f65a9e005705c86959cacac503726b5a52f00975a932874d8b156d6bfa226c2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytest_repeated-0.2.2.tar.gz:

Publisher: cicd.yaml on sinan-ozel/pytest-repeated

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytest_repeated-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for pytest_repeated-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 629381051e74687796ef2ed16eaa3e0a2d8e3ed976360bf97b5be4858b63cbb0
MD5 77003ac5e67cb7cc9c9d5944884572f4
BLAKE2b-256 dd2c8c982411647421743b0d36b3549dde08b184d95c3a474b672a1f5d7f3699

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytest_repeated-0.2.2-py3-none-any.whl:

Publisher: cicd.yaml on sinan-ozel/pytest-repeated

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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