Модуль 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 (может например сравнить две таблицы.