LINUX.ORG.RU

python delayed assert

 


0

1

Я тут пишу тесты с использованием pytest, в которых из скрипта опрашиваю железку разными ассертами. Но после каких либо изменений на железке, ось может не сразу вдуплить изменения. Например флешку вставили, а железка ее увидела через секунду, две или полсекунды. И мне нужен, механизм, который работал бы так.
* даю ассерт
* если условие True, идем дальше
* если условие False, вычисяляем условие еще N раз с задержкой M, до первой ситуации, когда условие True. Если такой ситуации не возникло, то уже полноценно ассертим False.
Гугления по delayed assert приводят меня вот к этой либе, но это совсем не то

★★★★★

1. сделать первую проверку не ассертом, а ифом
2. если истина, то ок
3. если ложь, то:
3-1. сделать цикл с проверкой времени - твоя задержка - все равно проверяем ифом
3-2. время истекло - делаем ассерт

может так?

bvn13 ★★★★★
()
Последнее исправление: bvn13 (всего исправлений: 2)
import time
import random

SCALE = [128, 128, 64, 32, 16, 8, 4, 2]

def delay(duration):
    for s in SCALE:
        yield None
        time.sleep(duration * 1.0 / s)
    yield None

def assert_t(seq):
    assert any(seq)

t = time.time()
assert_t(random.random() > 0.9 for _ in delay(1))
print(time.time() - t)
anonymous
()
Ответ на: комментарий от Aswed

ШТО

Как ты и просил, конструкция для проверки условий с задержкой. Из плюсов — не нужны лямбды и условие является частью выражения.

anonymous
()
Ответ на: комментарий от anonymous

Какой еще фласш? При чем тут SSD?

Aswed ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.