Python FDK - модульное тестирование вашей функции!

Вначале платформа Fn предлагала несколько официально поддерживаемых FDK. Со временем появилось больше FDK, поддерживаемых Fn CLI.

Цель FDK довольно проста - скрыть взаимодействие протокола Fn-to-function вместе с предоставлением простого в использовании интерфейса программирования. Цель состоит в том, чтобы сделать UX одинаковым независимо от того, какой язык программирования выберет разработчик для написания бессерверных функций.

Тестирование

Fn CLI (см. Раздел "Ресурсы" fn test) обеспечивает первое препятствие для тестирования бессерверных функций, создавая настраиваемый интерфейс для выполнения тестирования черного ящика . Давайте посмотрим на test.json:

{
    "tests": [
        {
            "input": {
                "body": {
                    "name": "Johnny"
                }
            },
            "output": {
                "body": {
                    "message": "Hello Johnny"
                }
            }
        },
        {
            "input": {
                "body": ""
            },
            "output": {
                "body": {
                    "message": "Hello World"
                }
            }
        }
    ]
}

Что на самом деле представляет собой этот тип тестирования? fn testпредоставляет два режима для запуска этих тестов: локальный и удаленный. Ключевое различие в том, что для локального режима вам необходимо иметь работающий Docker. Порядок действий такой:

  • делать docker build
  • делать docker run
  • отправлять запросы функции на основе протокола
  • разрушить функцию

Есть несколько причин, по которым нам не очень нравится fn testвключать тот факт, что он включает в себя Docker, т.е. разработчику необходимо создать образ и запустить его для очень простого теста черного ящика.

Модульное тестирование в FDK

Обработка запросов / ответов протокола является критически важной функцией каждого FDK, поэтому официально поддерживаемые FDK хорошо протестированы и на 100% совместимы с функциями Fn в восходящем направлении.

Несмотря на некоторые незначительные различия, FDK по своей сути одинаковы. Однако некоторые FDK предоставляют специфичные для языка программирования функции, такие как обещания в FDK-Node и async / await в FDK-Python. Одной из ключевых особенностей официально поддерживаемого FDK является то, что он рассматривается для внедрения, - это модульное тестирование. В данный момент только Java FDK предоставляет необходимый API для написания модульных тестов (JUnit) наиболее эффективным способом. Мы надеемся вскоре предоставить такое же покрытие функций с дополнительными FDK.

Начиная с v0.0.33, Python FDK предоставляет обширную среду для запуска модульных тестов. Давайте посмотрим на набор тестов для бессерверной функции Python FDK:

Как вы могли заметить, идея состоит в том, чтобы предоставить шаблон функции вместе с собственными модульными тестами, которые охватывают конкретную реализацию (тесты будут оставаться стабильными, пока реализация функций остается прежней). Если вы посмотрите на наборы тестов, вы увидите следующие методы утверждения:

assertInHeaders - allows asserting header(s) presence in response
assertInTime - allows asserting the time necessary for a function to finish
assertNotInTime - allows asserting the time within a function was not able to finish
assertResponseConsistent - allows to check the response data, if the data corresponds to assertion expectations

Как проводить тесты?

Если вы знакомы с нативными инструментами тестирования - просто используйте PyTest . Если нет, не беспокойтесь, все, что вам нужно, это установить pytestинструмент и выполнить следующую команду:

pytest -v -s --tb=long func.py

С помощью этой команды вы получите следующий результат:

С некоторыми дополнительными плагинами pytestвы можете получить тестовое покрытие. Используйте следующую команду для установки плагина покрытия:

pip install pytest-cov

pytest -v -s --tb=long --cov=func func.py

Вы можете найти следующие ссылки полезными в качестве общего продолжения этого сообщения:

  • Взгляните на существующие FDK .
  • Подписывайтесь на канал Fn на YouTube .
  • Чтобы узнать больше о платформе Fn, посетите домашнюю страницу проекта .

Suggested posts

Как бесплатно запускать плагины ChatGPT с помощью Langchain

Как бесплатно запускать плагины ChatGPT с помощью Langchain

Вы, должно быть, слышали обо всех новых мощных плагинах ChatGPT, таких как Browser, Code Interpreter и т. д. Но есть проблема: доступ к плагинам ограничен списком ожидания, и поэтому многие не имеют к нему доступа.

Мои наиболее используемые ресурсы кодирования

Мои наиболее используемые ресурсы кодирования

На этой неделе я получил электронное письмо от участника ежедневного списка рассылки. Они хотели знать: какие ресурсы вы посещаете ежедневно, еженедельно и ежемесячно? Отличный вопрос! Я рад поделиться некоторыми мыслями о моем рабочем процессе и основных ресурсах, которые я использую.

Related posts

Больше никаких паролей — как пароли заменят ваш пароль

Больше никаких паролей — как пароли заменят ваш пароль

Во избежание двусмысленности будут использоваться следующие термины; Аутентификатор; Мобильный телефон, используемый для входа на веб-сайт; веб-сайт или приложение, которое пользователь использует для выполнения запроса на вход в систему; Поставщик, предоставляющий данную услугу, например

Конкурс Goodreads Reading Challenge токсичен

Конкурс Goodreads Reading Challenge токсичен

Зуд в моей руке распространился, когда я торговалась с местным книгопродавцом за еще одну книгу. Эта книга, как и остальные, которые я купил недавно, займет свое место в моей стопке «Для чтения» (TBR); и тем не менее, я купил его.

Почему некоторые фрилансеры притворяются своей жизнью

Почему некоторые фрилансеры притворяются своей жизнью

Недавно я был в Linkedin, крупнейшей в мире профессиональной социальной сети, и нашел посты дизайнеров-фрилансеров, за которыми я следил и которые привлекли мое внимание. Все они публиковали фотографии из самолетов, на пляже со своими ноутбуками, из бассейнов и офисов с потрясающими видами.

Как спасти планету и заработать деньги

Как спасти планету и заработать деньги

Сколько раз вы, не задумываясь, выбрасывали пластиковую бутылку, стеклянную банку, алюминиевую банку или пакет экологически чистой энергии? Сколько раз вы хотели получить что-то взамен за их переработку? Если вы похожи на большинство людей, ответ, вероятно, много раз. Переработка часто рассматривается как хлопотное дело, рутинная работа или обязанность, не приносящая немедленных или ощутимых выгод.