Привет, сегодня я представляю вам что-то действительно особенное, я сделал о тестах, я надеюсь, что вам понравится, как я создаю это решение! Теперь давайте прыгнем в это!
Введение
Поставим к этому откровенно, тесты, безусловно, важно, но иногда они иногда очень скучны, когда вы пару, что с тем фактом, что каждый язык или каждая рамка имеет свой собственный способ обработки модульных тестов, это не помогает им. вещи !
Поэтому я спросил себя довольно простой вопрос, возможно ли управлять модульными тестами универсальным образом, независимо от языка программирования «скрипт» или рамки!
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 – это бесплатный и открытый исходный проект, это какая-то ссылка!
- Исходный код: На Github С
- Демо: Видео-демонстрация
Спасибо за чтение, обязательно понравится, подписать или оставить комментарий!
Оригинал: “https://dev.to/sanixdarker/test-your-code-php-js-python-ruby-with-comments-only-4o1c”