skip to navigation
skip to content

pytest-race 0.1.1

Race conditions tester for pytest

https://github.com/idlesign/pytest-race

Description

Race conditions tester for pytest

Introduces start_race fixture to run race condition tests.

Requirements

  • Python 2.7+, 3.3+
  • pytest 2.9.0+

Usage

You can use start_race fixture in your tests as follows:

from time import sleep

ACCUMULATOR = 0  # This global var is race conditions prone.

def test_race(start_race):
    from random import randint

    def actual_test():
        global ACCUMULATOR

        increment = randint(1, 10000)

        accumulator = ACCUMULATOR
        sleep(1)  # Simulate some lag.
        ACCUMULATOR += increment

        # By that moment ACCUMULATOR should have been updated
        # by another thread. Let's try to prove it.

        # Using simple `assert` as usual for pytest.
        assert accumulator + increment == ACCUMULATOR

    # Let's run `actual_test` in 2 threads.
    start_race(threads_num=2, target=actual_test)

start_race accepts the following arguments:

  • threads_num - number of threads to run simultaneously.
  • target - actual test callable to run in threads.
 
File Type Py Version Uploaded on Size
pytest-race-0.1.1.tar.gz (md5) Source 2016-11-21 4KB
pytest_race-0.1.1-py2.py3-none-any.whl (md5) Python Wheel 2.7 2016-11-21 4KB