Проверки: check, сопоставители, refused

Именованная проверка или таблица проверок; ожидаемый отказ API с кодом.

с 0.1.0-rc.1с 0.3.0

Методы

ЭлементСигнатураДоступен сAPI 3
checkcheck(name, actual, expected=True); check(rows) -> int0.1.0-rc.1¹без вызовов в выражении
within, near, one_of, matcheswithin(low, high), near(value, tolerance), one_of(*options), matches(pattern)0.3.0без изменений
refusedwith refused(code, *, name=None, **details) as refusal0.3.0без изменений

¹ Базовая форма; расширения 0.3.0 описаны в карточке.

Изменения API 3 (0.5.0)

Без изменений, await не нужен.

Правильно

Ожидания — именами CMSIS и сопоставителями; отказ — через refused с кодом и эффектом.

from stm32_gdbtest import within, near, one_of

t.check("VDDA, mV", t.read("board_adc_reading.vdda_mv"), within(2800, 3600))
t.check("stand backend", t.profile.stand["backend"], one_of("openocd", "jlink"))
t.check([
    ("PA5 output", "GPIOA->MODER & GPIO_MODER_MODER5", "GPIO_MODER_MODER5_0"),
    ("timer running", "TIM3->CR1 & TIM_CR1_CEN"),
])
with t.refused("unsupported_argument", effect="none"):
    t.call("app_step", object())

Не рекомендуется

assert и голый try/except не дают имени в отчёте и прячут код отказа. Магические числа вместо имён CMSIS не проверяются контрактом.

assert t.read("app_state.ticks") == 1                     # no named check
try:
    t.call("app_step", object())
except Exception:
    pass                                                    # hides the code and the effect
t.check("mode", t.read("GPIOA->MODER") & 0xC00, 0x400)    # magic numbers

Фрагменты показывают отклонённые или нежелательные приёмы, а не рабочий рецепт.

Фрагменты для тела сценария; символы прошивки условные.

← РегистрыВсе группыИнъекции →