Контекст: profile, registers, frames, locals
Данные прогона и проекта; регистры ядра, стек вызовов, локальные переменные и аргументы.
с 0.1.0-rc.1с 0.3.0
Методы
| Элемент | Сигнатура | Доступен с | API 3 |
|---|---|---|---|
profile | profile: Profile | 0.1.0-rc.1¹ | без изменений |
registers | registers(*names, frame=None) -> dict | 0.3.0 | без изменений |
frames | frames(limit=16) -> dict | 0.3.0 | без изменений |
locals, arguments | locals(frame=None) -> dict; arguments(frame=None) -> dict | 0.3.0 | без изменений |
¹ Базовая форма; расширения 0.3.0 описаны в карточке.
Изменения API 3 (0.5.0)
Без изменений, await не нужен.
Правильно
Параметры проекта — profile.get с умолчанием; аргументы — в остановленном кадре.
count = t.profile.get("user.measurement.count", 10)
core = t.registers("pc", "sp")
t.record("core", core)
t.check("top frame", t.frames(limit=8)["frames"][0]["function"], "app_step")
t.reach("app_step")
t.check("mode argument", t.arguments()["values"]["mode"], t.evaluate("APP_MODE_BLINK"))Не рекомендуется
Жёсткие числа в сценарии вместо параметров профиля; чтение цепочки индексов падает, если раздела нет.
count = t.profile["user"]["measurement"]["count"] # fails without the section
t.check("delay", t.read("app_delay"), 100) # expectation not taken from the profileФрагменты показывают отклонённые или нежелательные приёмы, а не рабочий рецепт.
Фрагменты для тела сценария; символы прошивки условные.