Рубрики
Без рубрики

Проверьте весь проект (PHP, JS, Python, Ruby) с только комментариями.

Я сделал подтверждение концепции Testa, инструмент CLI для тестирования файла или целого проекта с одной командной строкой на основе комментариев в коде. Тег с тестом, Python, CLI.

Привет, сегодня я представляю вам что-то действительно особенное, я сделал о тестах, я надеюсь, что вам понравится, как я создаю это решение! Теперь давайте прыгнем в это!

Введение

Поставим к этому откровенно, тесты, безусловно, важно, но иногда они иногда очень скучны, когда вы пару, что с тем фактом, что каждый язык или каждая рамка имеет свой собственный способ обработки модульных тестов, это не помогает им. вещи !

Поэтому я спросил себя довольно простой вопрос, возможно ли управлять модульными тестами универсальным образом, независимо от языка программирования «скрипт» или рамки!

1-) Первый вопрос: Что общего у всех проектов кода?

Ответ довольно прост, Комментарии ; Они являются единственными элементами, которые присутствуют практически в любом проекте, будь то с помощью языка сценариев или скомпилированным языком.

2-) Второй вопрос: как мы можем преобразовать простые комментарии к модульным тестам?

Здесь мы пытаемся создать систему, которая будет делать тесты подразделения в файле или проекте, основанном на комментариях, поэтому это был вопрос для нас, чтобы определить своего рода единый синтаксис, независимо от языка программирования, в котором мы находимся, то создать псевдо- Тестовая среда, такая как файл, в котором мы помещаем все элементы класса Testa, и мы проверим соответствующее утверждение!

За всем этим у нас будет программа CLI, которая будет просматривать и получить все тесты и тестировать их для создания окончательного отчета.

Для простого утверждения мы заканчиваем что-то подобное:

# ::testa_start::
# ::case_start::
# >> testa.isEqual(2, 2)
# << true
# ::case_end::
# ::testa_end::

В этом примере мы используем :: testa_start:: и :: testa_end:: Чтобы окружить нашу псевдо-тестовую среду, теперь мы можем определить тестовый случай с :: case_start:: и :: case_end:: Затем использую >> и << Чтобы определить ожидаемые входы и выходы, здесь Testa.isequal Просто проверяет, равно ли 2 равен 2, и мы ожидаем, что на производстве мы также имеем testa.issup , так далее …

Поэтому с этой структурой мы можем структурировать несколько тестовых случаев в одной тестированной псевдореустойке в коде:

# Inside a python code

# ::testa_start::
# ::case_start::
# >> testa.isEqual(2, 2)
# << true
# ::case_end::

# ::case_start::
# >> testa.isSup(3, 2)
# << true
# ::case_end:

# ::testa_end::

Что следует помнить, вот что, если я хочу сделать такие же тесты на JavaScript, например, мне просто нужно заменить комментарии, потому что, на JavaScript, комментарии за строку – // И не # ; Поэтому мы будем иметь:

// Inside a javascript code

// ::testa_start::

// ::case_start::
// >> testa.isEqual(2, 2)
// << true
// ::case_end::

// ::case_start::
// >> testa.isSup(3, 2)
// << true
// ::case_end:

// ::testa_end::

3-) Третий вопрос: как инкапсулировать метод и определить правильный выход относительно точного ввода?

Также как утверждение простого тестового корпуса, мы определяем точный синтаксис для окружения нашего метода!

# ::testa_start::
# ::case_start::
# >> addition(2, 2)
# << 4
# ::case_end::
# ::code_start::
def addition(a, b):
    """ This method will return the sum
    of a and b """

    return a+b
# ::code_end::
# ::testa_end::

В отличие от простых тестов случаев, здесь у нас есть :: code_start:: и :: code_end:: которые определяют куски кода, которые необходимо учитывать в среде Pseudo Test.

После выполнения тестов в файле/проекте Testa мы создаем тестовый отчет ParraPort к тестам, которые находятся в успехе, и те, которые не удаются!

4-) Четвертый вопрос: как управлять импортом из внешних библиотек!

В некоторых случаях мы часто имеем функции, которые вызывают внешние libs или другие функции в других файлах, чтобы решить эту проблему, я добавил в синтаксис Testa :: Import_start:: и :: Import_end:: Эта деталь в файле включает в себя все импорт, которые будут необходимы для испытаний в каждой псевдореустойчечной среде (файлы с утверждением).

# ::import_start::
Your imports here
# ::import_end::

5-) Пятый вопрос: как стандартизировать эти тесты только с одной командной строкой.

Для этой последней проблемы я использовал модель конфигурации файла, немного как package.json с NPM или пряжа в этом случае Tesla.json. , но довольно простой файл, который описывает, какой каталог (файл или проект) для тестирования, с какого языка это и какой интерпретатор, который должен использоваться, поэтому мы имеем это подобие структуры:

  • Пример на PHP :
{
    "module": "ta-php",
    "path": ["./square.php"],
    "extensions": [".php"],
    "launcher": "php"
}
  • Пример с Python :
{
    "module": "ta-py",
    "path": ["./sha256.py", "./square.py"],
    "extensions": [".py"],
    "launcher": "python"
}
  • Пример на Ruby :
{
    "module": "ta-rb",
    "path": ["./my_ruby_app/", "./square.rb"],
    "extensions": [".rb"],
    "launcher": "ruby"
}

Заключение

В заключение мы можем сказать, что мы сделали своего рода библиотеку, которая работает на CLI, позволяющую выполнять тесты подразделения, что бы ни настроил язык программирования сценариев и устанавливать его, это довольно просто.

Testa – это бесплатный и открытый исходный проект, это какая-то ссылка!

Спасибо за чтение, обязательно понравится, подписать или оставить комментарий!

Оригинал: “https://dev.to/sanixdarker/test-your-code-php-js-python-ruby-with-comments-only-4o1c”