A package showcasing common examples of flaky tests
This package contains a number of tests that are flaky and will fail intermittently. For each flaky test, a reliable counterpart test is provided.
All of the code is located under the tests
directory. The package is solely set up to create a cli tool that would walk through the tests and run them but it is not implemented yet.
To run the tests, instead of using pytest
, use python
given each test's main module is executable and would run pytest
multiple times, with different arguments, plugins and will compute a percent of failures.
For example, to run the test_flaky.py
test under tests/inter_test/resource_leak/memory_usage_flaky.csv
, run the following command:
python tests/inter_test/resource_leak/memory_usage_flaky.csv/test_flaky.py
The tests are organized in the following way:
tests
├── __init__.py
├── external_resource
│ ├── __init__.py
│ ├── async_wait
│ │ ├── __init__.py
│ │ ├── test_flaky.py
│ │ └── test_reliable.py
│ ├── io
│ ├── network
│ │ ├── __init__.py
│ │ ├── test_flaky.py
│ │ └── test_reliable.py
│ └── time
│ ├── test_flaky.py
│ └── test_reliable.py
├── inter_test
│ ├── __init__.py
│ ├── order_dependence
│ │ ├── __init__.py
│ │ ├── fixture_scoping
│ │ │ ├── __init__.py
│ │ │ ├── test_flaky.py
│ │ │ └── test_reliable.py
│ │ ├── polluted_mock
│ │ │ ├── __init__.py
│ │ │ ├── test_flaky.py
│ │ │ └── test_reliable.py
│ │ └── shared_resource
│ │ ├── __init__.py
│ │ ├── database_isolation
│ │ │ ├── __init__.py
│ │ │ ├── test_flaky.py
│ │ │ └── test_reliable.py
│ │ └── filesystem_conflict
│ │ ├── __init__.py
│ │ ├── test_flaky.py
│ │ └── test_reliable.py
│ └── resource_leak
│ ├── __init__.py
│ ├── memory_usage_flaky.csv
│ ├── memory_usage_flaky.png
│ ├── memory_usage_reliable.csv
│ ├── memory_usage_reliable.png
│ ├── test_flaky.py
│ └── test_reliable.py
└── intra_test
├── __init__.py
├── concurrency
│ ├── __init__.py
│ ├── test_flaky.py
│ └── test_reliable.py
├── floating_point
│ ├── __init__.py
│ └── rounding
│ ├── __init__.py
│ ├── overflow
│ │ ├── __init__.py
│ │ ├── test_flaky.py
│ │ └── test_reliable.py
│ └── precision_loss
│ ├── __init__.py
│ ├── test_flaky.py
│ └── test_reliable.py
├── randomness
│ ├── __init__.py
│ └── algorithmic_non_determinism
│ ├── __init__.py
│ ├── test_flaky.py
│ └── test_reliable.py
├── timeout
│ ├── __init__.py
│ ├── test_flaky.py
│ └── test_reliable.py
└── too_restrictive
├── __init__.py
├── test_flaky.py
├── test_fuzzing.py
└── test_reliable.py