Pytest lambda 处理程序传递事件和上下文
Pytest lambda handler passing event and context
我正在使用 pytest 为我的 lambda 函数编写单元测试。我不知道应该如何将我的事件参数传递给函数调用。我了解到可以使用@pytest.fixture来实现。我对 Python 和 pytest 非常陌生。相信我以错误的方式使用固定装置。请帮帮我!!
下面是我的 lambda 处理程序:
lambda_service.py
def lambda_handler(event, context):
logger.info('Event received: ' + json.dumps(event))
try:
sort = (event['sort'])
size = int(event['size'])
page = int(event['page'])
list_response = MyService().get_people_list(sort, size, page)
logger.info(list_response)
except Exception as e:
logger.error("Unable to fetch details")
logger.exception(e)
return list_response
这是我的测试class-
class TestServiceHandler:
@pytest.fixture
def event(self):
return {
"sort": "asc",
"size": 5,
"page": 0
}
@pytest.fixture
def context(self):
return None
def test_lambda_handler(self):
result = lambda_service.lambda_handler(self.event, self.context)
assert_valid_schema(result, 'vendor_list.json')
当 运行 这个测试
时,我遇到了以下错误
line 17, in lambda_handler
sort = (event['sort'])\nTypeError: 'method' object is not subscriptable"
虽然我在固定装置中传递事件和上下文,它仍然指的是 lambda_handler
中的 event[sort]
。
您正确定义了灯具,但使用错误。要修复,请将参数添加到与设备名称完全相同的 test_lambda_handler
方法。当 运行 测试时,pytest
将分析每个参数并插入夹具 return 值(如果它可以找到具有该名称的夹具)。示例:
class TestServiceHandler:
@pytest.fixture
def event(self):
...
@pytest.fixture
def context(self):
...
def test_lambda_handler(self, event, context):
result = lambda_service.lambda_handler(event, context)
assert ...
我正在使用 pytest 为我的 lambda 函数编写单元测试。我不知道应该如何将我的事件参数传递给函数调用。我了解到可以使用@pytest.fixture来实现。我对 Python 和 pytest 非常陌生。相信我以错误的方式使用固定装置。请帮帮我!!
下面是我的 lambda 处理程序:
lambda_service.py
def lambda_handler(event, context):
logger.info('Event received: ' + json.dumps(event))
try:
sort = (event['sort'])
size = int(event['size'])
page = int(event['page'])
list_response = MyService().get_people_list(sort, size, page)
logger.info(list_response)
except Exception as e:
logger.error("Unable to fetch details")
logger.exception(e)
return list_response
这是我的测试class-
class TestServiceHandler:
@pytest.fixture
def event(self):
return {
"sort": "asc",
"size": 5,
"page": 0
}
@pytest.fixture
def context(self):
return None
def test_lambda_handler(self):
result = lambda_service.lambda_handler(self.event, self.context)
assert_valid_schema(result, 'vendor_list.json')
当 运行 这个测试
时,我遇到了以下错误line 17, in lambda_handler
sort = (event['sort'])\nTypeError: 'method' object is not subscriptable"
虽然我在固定装置中传递事件和上下文,它仍然指的是 lambda_handler
中的 event[sort]
。
您正确定义了灯具,但使用错误。要修复,请将参数添加到与设备名称完全相同的 test_lambda_handler
方法。当 运行 测试时,pytest
将分析每个参数并插入夹具 return 值(如果它可以找到具有该名称的夹具)。示例:
class TestServiceHandler:
@pytest.fixture
def event(self):
...
@pytest.fixture
def context(self):
...
def test_lambda_handler(self, event, context):
result = lambda_service.lambda_handler(event, context)
assert ...