Неофициальный тестер для проверки решений highload cup. Тестер умеет проверять код ответа, а также содержимое ответа вашего сервера.
Тестер написан с использованием Python 2.7. Из дополнительных пакетов используется requests
, который можно установить как:
pip install requests
Возможно, эту команду нужно будет выполнить с привилегией суперпользователя (через sudo
)
Чтобы запустить тестер, нужно выполнить следующую минимальную команду:
python tank.py --ammo_dir=/path/to/ammo/root
При выполнении приведенной выше команды тестер начнет последовательно отправлять запросы к вашему серверу, запущенному по адресу http://localhost:8080
, и проверять валидность ответов. Запросы и ответы берутся из патронов/ожидаемых ответов танка. Последовательно будет запущена фаза 1, потом фаза 2, и фаза 3.
Тестер поддерживает следующие параметры:
--host
- хост, на котором запущен ваш сервер, по-умолчанию http://localhost:8080
--ammo_dir
- корень директории, в которой лежат патроны к танку и ответы, т.е. путь до директории, в которой расположены ammo
и answers
--all
- запустить все тесты (фаза 1, фаза 2, фаза 3) последовательно. Это условие по-умолчанию.
С помощью следующих флагов можно выбирать фазу, которую хочется запустить:
--phase1
, --phase2
, --phase3
Эти фазы можно комбинировать, например, --phase1 --phase2
или --phase2 --phase3
. Очевидно, что --phase1 phase3
не имеет смысла, потому что не была проведена фаза 2, которая модифицирует данные для фазы 3, но запустить такие тесты все равно можно. Независимо от порядка переданных флагов --phaseX
, они всегда выполняются в порядке 1 - 2 - 3.
--all
и --phaseX
взаимоисключающие флаги, можно использовать либо --all
, либо комбинацию флагов --phaseX
.
--ignore_results
- отключает проверку ответов. В этом случае тестер будет просто обстреливать решение, но не будет проверять правильность ответов. Может быть полезно для тестирования сервера на падения.
--fail_on_error
- прерывать работу тестера сразу после нахождения ошибки, в http-коде или теле ответа.