https://github.com/scony/pytest-timeouts
Linux-only Pytest plugin to control durations of various test case execution phases
https://github.com/scony/pytest-timeouts
linux pytest pytest-plugin
Last synced: 10 months ago
JSON representation
Linux-only Pytest plugin to control durations of various test case execution phases
- Host: GitHub
- URL: https://github.com/scony/pytest-timeouts
- Owner: Scony
- License: mit
- Created: 2018-06-25T16:55:44.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2019-12-30T20:03:42.000Z (over 6 years ago)
- Last Synced: 2025-02-27T08:19:34.771Z (over 1 year ago)
- Topics: linux, pytest, pytest-plugin
- Language: Python
- Homepage:
- Size: 54.7 KB
- Stars: 12
- Watchers: 5
- Forks: 3
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# pytest-timeouts
[](https://travis-ci.org/Scony/pytest-timeouts)
[](https://codecov.io/gh/Scony/pytest-timeouts)
[](https://pytest-timeouts.readthedocs.io/en/latest/?badge=latest)
[](https://pypi.org/project/pytest-timeouts/)


[](https://pepy.tech/project/pytest-timeouts)
[](https://github.com/Scony/pytest-timeouts/blob/master/LICENSE)

Linux-only Pytest plugin to control durations of various test case execution phases.
## Documentation
For documentation visit [pytest-timeouts.readthedocs.io](https://pytest-timeouts.readthedocs.io).
## About
This plugin has been designed for specific use cases which are out of the scope of famous `pytest-timeout` plugin.
It uses a `SIGALRM` signal to schedule a timer which breaks the test case.
## Features
* `setup`, `execution` and `teardown` phase timeouts controllable by:
* opts: `--setup-timeout`, `--execution-timeout` and `--teardown-timeout`
* ini: `setup_timeout`, `execution_timeout` and `teardown_timeout`
* mark: `setup_timeout`, `execution_timeout` and `teardown_timeout`
* fixed order of timeout settings: **opts** > **markers** > **ini**, controlled by `--timeouts-order`
* `--timeouts-order` allow change order of override timeout settings, and disable some settings, i.e. `--timeout-order i` disable markers and opts, any combination is allow
* timeout disabled when debugging with PDB
## Installation
### Stable
```bash
pip install pytest-timeouts
```
### Master
```bash
pip install git+https://github.com/Scony/pytest-timeouts.git
```
## Usage
### Command line
```bash
pytest --setup-timeout 2.5 --execution-timeout 2.01 --teardown-timeout 0
```
### `pytest.ini` setting
```ini
[pytest]
setup_timeout = 2.5
execution_timeout = 2.01
teardown_timeout = 0
```
### Mark
```python
import time
import pytest
@pytest.mark.setup_timeout(0.3)
@pytest.mark.execution_timeout(0.5)
@pytest.mark.teardown_timeout(0.4)
def test_timeout():
time.sleep(1)
```
## Contributors
* Pawel Lampe
* Kamil Luczak