speckulatius / pytest-race

Race conditions tester for pytest

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

pytest-race

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

https://landscape.io/github/idlesign/pytest-race/master/landscape.svg?style=flat

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.

About

Race conditions tester for pytest

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

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Python 100.0%