如何构建 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 main
和 from __app__.HttpTrigger import main
,但是当这些导入语句中的任何一个存在时,visual studio 代码无法发现测试。直接执行test_first_function.py
文件分别报如下错误:ImportError: attempted relative import with no known parent package
和ModuleNotFoundError: No module named '__app__'
在 Python 模块和包方面,我远不是专家,因此任何关于如何解决这些问题的见解都会有所帮助。最好能就其他人如何构建他们的Python azure functions 项目
获得其他想法
如果您将 tests
目录向上移动一层,在 __app__
目录之外,那么您应该能够 运行 使用 [=12= 进行测试和导入]
正在进行有关改进测试体验和正确指导的讨论 (discussion) (work-item)。
同时,上述建议应该可以正常工作。您可以使用 this project (azure-functions branch) 作为参考(由 Brett Canon 在上面标记的讨论中链接)。
我正在使用带有 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 main
和 from __app__.HttpTrigger import main
,但是当这些导入语句中的任何一个存在时,visual studio 代码无法发现测试。直接执行test_first_function.py
文件分别报如下错误:ImportError: attempted relative import with no known parent package
和ModuleNotFoundError: No module named '__app__'
在 Python 模块和包方面,我远不是专家,因此任何关于如何解决这些问题的见解都会有所帮助。最好能就其他人如何构建他们的Python azure functions 项目
获得其他想法如果您将 tests
目录向上移动一层,在 __app__
目录之外,那么您应该能够 运行 使用 [=12= 进行测试和导入]
正在进行有关改进测试体验和正确指导的讨论 (discussion) (work-item)。
同时,上述建议应该可以正常工作。您可以使用 this project (azure-functions branch) 作为参考(由 Brett Canon 在上面标记的讨论中链接)。