Модульное тестирование AWS: пошаговая функция - PullRequest
0 голосов
/ 29 июня 2018

Я новичок в AWS, и я создал свою первую пошаговую функцию AWS, приведенную ниже. Теперь следующий шаг заключается в модульном тестировании этой пошаговой функции. Я самостоятельно проверил юнит-функцию лямбда-функции, теперь я застрял и понятия не имею, как я могу приступить к юнит-тестированию функции шага.

У меня также возникает вопрос: стоит ли проводить модульное тестирование пошаговой функции, какое-то время чувствую, можно ли это сделать или нет, поскольку это всего лишь json.

Я попытался выполнить поиск, но я не получил никакой подсказки в Интернете или документации AWS. Любая помощь будет оценена любым блогом по этому или любому примеру использования. Спасибо

{
"Comment": "An example of the Amazon States Language using a choice state.",
"StartAt": "LoginState",
States": {
"LoginState": {
  "Type": "Task",
  "Resource": "arn:aws:lambda:us-east-1:170344690019:function:myfirstLogin",
  "Next": "ChoiceState"
},
"ChoiceState": {
  "Type" : "Choice",
  "Choices": [
    {
      "Variable": "$.success",
      "BooleanEquals": true,
      "Next": "logoutState"
    },
    {
      "Variable": "$.success",
      "BooleanEquals": false,
      "Next": "DefaultState"
    }
  ],
  "Default": "DefaultState"
},

"logoutState": {
  "Type" : "Task",
  "Resource": "arn:aws:lambda:us-east-1:170344690019:function:myFirstLogout",
  "End": true
},


"DefaultState": {
  "Type": "Fail",
  "Error": "DefaultStateError",
  "Cause": "No Matches!"
}

}
}

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

AWS недавно анонсировала загружаемую версию Step Functions

0 голосов
/ 21 сентября 2018

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

Так почему же придурок? Поскольку вы переходите к интеграционному тестированию, вам понадобится возможность запустить конечный автомат, чтобы вы могли подать ему входные данные и проверить выходные данные. Вот 2 способа автоматизировать тестирование вашего конечного автомата ...

  1. Разверните свой конечный автомат в тестовой среде в своей учетной записи AWS и вызовите его напрямую, используя любой из инструментов, предоставляемых AWS ( cli , boto3 и т. Д.) , Это ближе к автоматическому тестированию, поскольку тестирует конечный автомат в реальной среде. Если вы настроите это как часть конвейера CI, вам потребуется настроить сервер сборки с доступом, который необходим для установки и запуска конечного автомата в вашей учетной записи AWS.

  2. Попробуйте что-то вроде stepfunctions-local , чтобы эмулировать работающий конечный автомат в вашей локальной системе или в вашей тестовой среде. Эта опция может быть полезна, если у вас есть настройка конвейера CI, которая уже выполняет ваши существующие модульные тесты. Это потребует некоторых усилий для правильной установки инструментария в вашей среде CI, но может стоить.

  3. Мой личный фаворит ... используйте localstack . Эти ребята проделали большую работу по эмуляции нескольких сервисов AWS, которые можно запускать и запускать в контейнере Docker. Это особенно полезно, если ваша лямбда использует другие сервисы AWS. Мне нравится запускать его в своей среде CI для интеграционного тестирования.

  4. Использование AWS SAM CLI . Я сам этим не пользовался. Это требует, чтобы вы использовали модель приложения без сервера. Их документация действительно улучшилась, поскольку она стала более официально поддерживаемой, поэтому ее следует очень легко использовать, следуя их руководствам и многочисленным примерам. Для запуска этого в среде CI потребуется, чтобы в вашей тестовой среде был установлен инструмент.

Надеюсь, это поможет. Я не думаю, что это помогло бы поделиться каким-либо кодом в этом ответе, потому что то, что вы пытаетесь сделать, не тривиально и может быть реализовано несколькими способами. Например, сервисы CI, такие как CircleCI, используют контейнеры Docker, позволяя вам создать собственный контейнер Docker для выполнения stepfunctions-local или localalstack.

EDIT

См. ответ из @niqui ниже. Я считаю, что определенно предпочел бы эту опцию для тестирования в среде CI в качестве альтернативы stepfunctions-local или localalstack, учитывая, что она предоставляется и поддерживается AWS.

...