Проблемы с тестированием advisory_lock с помощью pytest
В настоящее время я пытаюсь протестировать функцию, которая блокирует некоторую строку и не позволяет делать что-либо под этой заблокированной строкой, используя advisory_lock
.
вот мой код:
import pytest
from django_pglocks import advisory_lock
from threading import Thread
from time import sleep
def function_that_should_lock():
with advisory_lock('secret_string', wait=True):
sleep(10)
@eager_db_test
def test_lock():
failed = False
function_that_should_lock_thread = Thread(
target=function_that_should_lock,
)
function_that_should_lock_thread.start()
with advisory_lock('secret_string', wait=False):
failed = True
assert not failed
По какой-то причине function_that_should_lock
фактически не блокирует строку, и failed
будет установлено значение True
.
Пожалуйста, помогите мне понять, как это работает =)