gpt4 book ai didi

django - 自定义上下文处理器、单元测试和请求工厂

转载 作者:行者123 更新时间:2023-12-04 08:41:32 25 4
gpt4 key购买 nike

我已经开始使用自定义上下文处理器将对象传递给每个响应。唯一的问题是我的测试现在失败了,因为他们在数据库中找不到这个对象。我尝试使用请求工厂创建测试,因为我的理解是这将测试与 Django 膨胀(如中间件等)隔离开来。我猜上下文处理器仍在运行。有没有办法克服这个问题?我是否必须将这个对象传递给每个测试?如果有任何方法可以避免它,我宁愿这样做。

最佳答案

经过进一步调查,我认为最好的解决方案是在每次测试期间覆盖 context_processors 元组。从 1.4 开始,这已经成为可能。这似乎比向每个测试发送所需的对象要好。我想调查一下我是否可以为它编写一个自定义装饰器,但对它们还不够了解。引用:https://docs.djangoproject.com/en/dev/topics/testing/overview/#overriding-settings

编辑:此处概述了此解决方案的另一个实现:How to Unit test with different settings in Django?可能会更好,因为它可以用于整个 tests.py

编辑2:发现装饰器实际上是python结构(假设它们是自定义的django功能!顺便说一句,python的大量新手。在我学习任何python之前学习了django),我认为自定义装饰器是我将要使用的方式.

edit3:我认为实际上更简单的解决方案是在我的设置模块中有一个 test.py 文件,并用测试中的测试设置覆盖我的基本设置 context_processor 模块。例如。:

from settings import localsettings
from settings import testsetttings

localtestsettings.context_processors = testsettings.context_processors

tests(unittest):.....

任何其他建议都非常受欢迎。

编辑4:好的。我现在觉得很傻。显然,我最终使用的解决方案是创建一个测试设置文件,并将其传递给测试命令。

关于django - 自定义上下文处理器、单元测试和请求工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17845719/

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