gpt4 book ai didi

python - Pytest lambda 处理程序传递事件和上下文

转载 作者:行者123 更新时间:2023-12-02 10:59:21 25 4
gpt4 key购买 nike

我正在使用 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 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 将分析每个参数,如果可以找到具有该名称的固定装置,则插入固定装置返回值。示例:

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 ...

关于python - Pytest lambda 处理程序传递事件和上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59999968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com