Я пытался сделать то же самое и нигде не мог найти ответ.Подумав немного над проблемой, я придумал довольно чистый подход.Я заканчиваю запись в блоге об этом, которую я опубликую здесь, но в основном я использовал шаблон Factory, чтобы загрузить свой код слоя и смоделировал код во время модульных тестов.
Это будет выглядеть примерно так:
Предположим, что весь код вашего слоя инкапсулирован в класс с именем SharedCode.Вы можете использовать статическую фабрику, которая загружает SharedCode с помощью условного импорта:
class Factory:
def __init__(self):
self._shared = None
def set_shared_code(self, shared_code):
self._shared = shared_code
def get_shared_code(self):
if not self._shared:
from shared_code import SharedCode
self._shared = SharedCode()
return self._shared
FACTORY = Factory()
В своих тестах вы можете использовать установщик Factory для макетирования кода Layer, но в вашей реальной функции Lambda вы просто загружаетеобщий код, использующий Factory, который благодаря условному импорту и среде выполнения Lambda, которая внедряет Layer, сможет без проблем загрузить его.
Надеюсь, это поможет, и я вернусь, чтобы получить большезавершите пример, как только я закончу создавать образцы для своего поста в блоге.
РЕДАКТИРОВАТЬ: упомянутый выше пост в блоге готов, и вы можете прочитать его здесь :