14 python local amazon-web-services aws-lambda
有什么方法可以在本地测试aws lambda吗?我知道有一个名为'localstack'的包,但似乎没有多少人试过它.
小智 16
您可以像运行任何python脚本一样运行Lambda函数,例如
if __name__ == "__main__":
event = []
context = []
lambda_handler(event, context)
Run Code Online (Sandbox Code Playgroud)
如果您使用虚拟环境,这有助于确保为lambda函数安装所需的所有依赖项以及正确的python版本.
您在本地没有的"localstack"中是否还有其他需要的服务?
我认为Moto是一个允许您的测试轻松模拟AWS服务的库,可能非常有用.
想象一下,您有以下要测试的python代码:
import boto3
class MyModel(object):
def __init__(self, name, value):
self.name = name
self.value = value
def save(self):
s3 = boto3.client('s3', region_name='us-east-1')
s3.put_object(Bucket='mybucket', Key=self.name, Body=self.value)
Run Code Online (Sandbox Code Playgroud)
花一点时间思考过去你将如何测试它.
现在看看如何用Moto测试它:
import boto3
from moto import mock_s3
from mymodule import MyModel
@mock_s3
def test_my_model_save():
conn = boto3.resource('s3', region_name='us-east-1')
# We need to create the bucket since this is all in Moto's 'virtual' AWS account
conn.create_bucket(Bucket='mybucket')
model_instance = MyModel('steve', 'is awesome')
model_instance.save()
body = conn.Object('mybucket', 'steve').get()['Body'].read().decode("utf-8")
assert body == b'is awesome'
Run Code Online (Sandbox Code Playgroud)
随着装饰器包装测试,对s3的所有调用都会被自动模拟掉.模拟保持桶和键的状态.
| 归档时间: |
|
| 查看次数: |
7435 次 |
| 最近记录: |