pytest的竞争条件测试
pytest-race的Python项目详细描述
https://github.com/idlesign/pytest-race
说明
pytest的竞赛条件测试仪
引入start_race运行竞赛条件测试的fixture。
要求
- Python2.7+,3.3+
- Pytest 2.9.0+
用法
您可以在测试中使用start_race夹具,如下所示:
fromtimeimportsleepACCUMULATOR=0# This global var is race conditions prone.deftest_race(start_race):fromrandomimportrandintdefactual_test():globalACCUMULATORincrement=randint(1,10000)accumulator=ACCUMULATORsleep(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.assertaccumulator+increment==ACCUMULATOR# Let's run `actual_test` in 2 threads.start_race(threads_num=2,target=actual_test)
start_race接受以下参数:
- threads_num-要同时运行的线程数。
- target-可在线程中运行的实际测试调用。