gpt4 book ai didi

python - 如何分发 Django 应用程序及其特定设置?

转载 作者:行者123 更新时间:2023-11-30 23:25:31 25 4
gpt4 key购买 nike

我遇到了有关应用程序特定设置的问题。

我有两个 Django 项目,P1 和 P2,每个项目都在自己的虚拟环境中运行。 P2 使用 P1 应用程序中的一些模型,因此我使用 add2virtualenv (感谢 virtualenvwrapper )来解决依赖关系。

问题是其中一些 P1 应用程序依赖 custom settings (仅位于 p1/project/settings.py 中,没有什么花哨的 so far )这显然强烈干扰 P2 的执行。

例如,当我运行 P2 的测试时:

$ ./p2/manage.py test

Traceback (most recent call last):
File "./manage.py", line 11, in <module>
execute_from_command_line(sys.argv)
[...]
AttributeError: 'Settings' object has no attribute 'SOME_P1_APP_CUSTOM_SETTING'

我该如何处理这个问题?它是否被设计破坏了,或者 Django 是否提供了一些优雅的东西来处理应用程序特定设置的分发?
我希望避免在每个需要这些设置的项目中复制/粘贴这些设置。

最佳答案

如果您有两个应用程序,一个是后端,另一个是使用它的服务,我建议您在测试使用它的服务时模拟后端。这是这里问题的关键:您尝试为事物 A 运行测试,它也需要事物 B 运行,而 Django 测试服务器并没有真正满足这一需求(这是当您执行时在表面下运行的)测试)。

所以,是的,在测试服务时您需要伪造后端(反之亦然)。

有多种方法可以做到这一点,包括使用 Python 的“模拟”库来模拟其他应用程序的 API(或者更具体地说,模拟 MyService 中与 MyBackend 通信的函数)并返回适合的数据对象无论你想测试什么行为。这些虚假响应可能基于从其他应用程序转储的 JSON 加载的实际测试装置。

为了让生活更轻松,您还可以在后端存储库中编写一些测试,以确保模拟后端数据的架构实际上与真实后端的架构相匹配,这样可以避免在一个或两个应用程序发生更改时出现回归。如果您确实为该数据使用固定装置,则将该模拟数据存储在中间存储库中(然后将其作为代码库的外部依赖项包含在内)将是确保它可用于两个代码库而不需要实际的其他代码库的一种方法。在测试期间安装并与其一起运行。

关于python - 如何分发 Django 应用程序及其特定设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22975323/

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