我正在使用 Python 来使用 Azure Functions,并在获取正确的项目目录结构时遇到了问题。我的目标是拥有一个库目录,我可以将所有业务逻辑放入其中,然后从函数入口点引用该目录,并且还有一个可以测试函数和库的测试目录直接编码。我目前有以下结构:
__app__
| - MyFirstFunction
| | - __init__.py
| | - function.json
| - library
| | - __init__.py
| | - services
| | | - __init__.py
| | | - sample_service.py
| - host.json
| - requirements.txt
| - __init__.py
| - tests
| | - __init__.py
| | - test_first_function.py
我最终得到了这个结构,并且能够使用 from __app__.library.services import sample_service
从 azure 函数引用 sample_service
并且事情似乎有效,但我我无法进行单元测试以正确引用天蓝色函数。我在测试中尝试了 from ..HttpTrigger import main
和 from __app__.HttpTrigger import main
,但是当这些导入语句中的任何一个时,Visual Studio Code 无法发现测试已就位。当我直接执行 test_first_function.py
文件时,分别收到以下错误: ImportError: attemptsrelative import with noknownparent package
和 ModuleNotFoundError: No module named ' __app__'
在 Python 模块和包方面,我远非专家,因此任何有关如何解决这些问题的见解都会有所帮助。如果能了解其他人如何构建其 Python azure 函数项目的其他想法,那就太好了
最佳答案
如果将 tests
目录向上移动一级,位于 __app__
目录之外,那么您应该能够运行测试并使用 from 导入__app__.MyFirstFunction 导入 myfunction
正在讨论改善测试体验和正确指导 ( discussion ) ( work-item )。
同时,上述建议应该可以正常工作。您可以使用 this project (azure-functions branch)作为引用(由 Brett Canon 在上面标记的讨论中链接)。
关于python - 如何构建azure函数python项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59299297/