Модуль tap - tsafin/tarantool GitHub Wiki
lua модуль tap
, входящий в тарантул предназначен для упорядочивания тестирования других модулей, написанных для тарантула.
Модуль позволяет писать тесты в семантике протокола TAP.
Вывод таких тестов парсится стандартными TAP-анализаторами и поэтому можно использовать такие утилиты
как prove
, позволяющие запускать тесты, выводить общую статистику по ним итп.
Описание API
Введение
Пример:
#!/usr/bin/tarantool
local tap = require('tap')
test = tap.test("my test name")
test:plan(2)
test:ok(2 * 2 == 4, "2 * 2 is 4")
test:test("some subtests for test2", function(test)
test:plan(2)
test:is(2 + 2, 4, "2 + 2 is 4")
test:isnt(2 + 3, 4, "2 + 3 is not 4")
end)
test:check()
Такой тест выведет следующее:
TAP version 13
1..2
ok - 2 * 2 is 4
# some subtests for test2
1..2
ok - 2 + 2 is 4
ok - 2 + 3 is not 4
# some subtests for test2: end
ok - some subtests for test2
Доступные функции
:plan(count)
Сообщает системе tap
сколько тестов (иди сабтестов) далее будет выполнено
:check()
Выполняет проверку количества выполненных тестов (проверка числа сабтестов выполняется автоматически, поэтому данный метод актуален только на уровне всего скрипта с тестами)
:diag(message)
Позволяет вывести диагностическое сообщение
:ok(condition, test_name)
Основной макрос (его используют остальные макросы). В зависимости от условия condition
(истина/ложь)
печатает ok
или not ok
плюс отладочную информацию).
:fail(test_name)
Эквивалентно :ok(false, test_name)
:skip(message)
Эквивалентно :ok(true, message .. ' # skip')
:is(got, expected, test_name)
Проверяет значение первого аргумента на соответствие второму.
:isnt(got, expected, test_name)
Отрицание для метода :is
:isnil(value, test_name)
Проверяет соответствие значения nil
:isnumber
, :isstring
, :istable
, :isboolean
, :isudata
, :iscdata
Проверяют типы значений.
is_deeply(got, expected, test_name)
рекурсивная версия метода :is
(может например сравнить две таблицы.