Как проверить отображение желтого цвета при скорости 0
Что проверяют
Что вы начнёте с уточнения системы, а не с кода. Скорее всего речь о спидометре или приборной панели, где цвет индикатора зависит от скорости. Интервьюер хочет увидеть, что вы разделите логику «скорость в цвет» и отрисовку и проверите каждую своим способом. Следом обычно спрашивают про соседние значения и сравнение цвета на экране.
Как отвечать
Сначала вопросы: что за интерфейс (веб, десктоп, встроенная панель), откуда приходит скорость, какой именно жёлтый указан в макете и что считается нулём. Датчик стоящей машины может выдавать 0,3 км/ч, и требование должно говорить, жёлтый ли это.
Дальше несколько уровней:
- логика: если есть функция вроде
speed_to_color(speed), её закрывают юнит-тестами на pytest сparametrize:0,0.0, небольшое положительное значение, отрицательное,None. Это быстро, стабильно и покрывает правило целиком; - отображение в вебе: подставить скорость 0 через заглушку API или тестовые данные и прочитать цвет. В Selenium
element.value_of_css_property("background-color")вернёт строку видаrgba(255, 255, 0, 1), в Playwright естьexpect(locator).to_have_css("background-color", "rgb(255, 255, 0)"). Сравнивать нужно с цветом из макета, приведённым к тому же формату; - класс или атрибут: если индикатор меняет класс или
data-state, надёжнее проверять его, а сам цвет оставить на один визуальный тест; - десктоп или картинка: скриншот элемента и чтение пикселя через
Image.getpixelиз Pillow с допуском, потому что сглаживание и цветовой профиль сдвигают значения на несколько единиц. Для Qt-приложений естьpytest-qt.
Отдельно проверьте переход: при разгоне с нуля цвет меняется, при возврате к нулю снова становится жёлтым.
Где спотыкаются
Сразу пишут программу на Pygame, которая рисует жёлтый квадрат. Это не проверка чужой системы, а новая программа, и интервьюер ждёт тест-дизайн.
Сравнивают цвет строкой один к одному. #FFFF00, yellow и rgb(255, 255, 0) это один цвет, но разные строки, и тест падает на формате.
Проверяют только ровно 0. Логика обычно ломается рядом: на дробной скорости, на отрицательном значении от шумного датчика или при возврате к нулю после движения.