gpt4 book ai didi

python - Pytest 找不到 Lambda 层中定义的函数

转载 作者:行者123 更新时间:2023-12-05 05:59:23 24 4
gpt4 key购买 nike

我最近在我的一个工作项目中添加了一个 Lambda 层,虽然它在几乎所有方面都取得了巨大的成功,但我现在在运行测试时遇到了问题。这是我精简的目录结构:

root
- dependencies-layer
- python
- __init__.py
- boto3
- (list of other modules)
- dependencies.py
- requirements.txt
- src
- hello_world
- __init__.py
- hello_world.py
- requirements.txt
- tests
- hello_world
- unit
- test_hello_world.py
- pytest.ini
- template.yaml

依赖关系.py:

import boto3

def db_conn():
db = boto3.resource("dynamodb")
return db

Hello World .py

from dependencies import db_conn

def hw_handler():
(unimportant functionality)

test_hello_world.py

from src.hello_world import hello_world

(unimportant unit tests)

所有功能都很好用。运行 sam build 后,我可以在本地运行并触发 hw_handler,然后部署并触发它,一切都没有问题。当我运行 pytest 并触发 test_hello_world.py 时,问题就出现了。我收到以下错误:

(Traceback)
src/hello_world/hello_world.py:1: in <module>
ImportError: cannot import name 'db_conn' from 'dependencies' (unknown location)

所以错误是当 pytest 导入 lambda 进行测试时,它无法从导入的 lambda 中的我的 lambda 层导入函数。显然 pytest 找不到我的依赖项文件夹,所以我的问题是,将 Lambda 层合并到我的 pytest 代码中的最佳方法是什么?

最佳答案

在您的 __init__.py 中,为包含 lambda 层测试的文件夹的根目录添加另一个路径。

见下文 - Find the current directory and file's directory

我最终执行了以下操作来运行我的测试:

import sys, os

dir_path = os.path.dirname(os.path.realpath(__file__))

sys.path.append(dir_path + "/../../hubspot_cdk/code/layers/hubspotDeps/python")
sys.path.append(dir_path + "/../../hubspot_cdk/code/layers/hubspotUtils/python")

关于python - Pytest 找不到 Lambda 层中定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68201224/

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