如何构建 azure functions python 项目

How to structure azure functions python project

我正在使用带有 Python 和 运行 的 Azure Functions 解决获取正确项目目录结构的问题。我的目标是有一个 library 目录,我可以将所有业务逻辑放入其中,然后从函数入口点引用它,还有一个可以直接测试函数和 library 代码的测试目录.我目前有以下结构:

__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 并且一切似乎都有效,但我无法进行单元测试以能够正确引用 azure 函数。我在测试中尝试了 from ..HttpTrigger import mainfrom __app__.HttpTrigger import main,但是当这些导入语句中的任何一个存在时,visual studio 代码无法发现测试。直接执行test_first_function.py文件分别报如下错误:ImportError: attempted relative import with no known parent packageModuleNotFoundError: No module named '__app__'

在 Python 模块和包方面,我远不是专家,因此任何关于如何解决这些问题的见解都会有所帮助。最好能就其他人如何构建他们的Python azure functions 项目

获得其他想法

如果您将 tests 目录向上移动一层,在 __app__ 目录之外,那么您应该能够 运行 使用 [=12= 进行测试和导入]

正在进行有关改进测试体验和正确指导的讨论 (discussion) (work-item)。

同时,上述建议应该可以正常工作。您可以使用 this project (azure-functions branch) 作为参考(由 Brett Canon 在上面标记的讨论中链接)。