gpt4 book ai didi

python - django View 中的单元测试sensitive_post_parameters装饰器

转载 作者:行者123 更新时间:2023-12-01 09:27:43 30 4
gpt4 key购买 nike

我想在我的 django 项目中创建新用户。

我将 @sensitive_post_parameters 装饰器应用于该 View ,以确保在存在未处理的异常或类似情况时不会记录密码(如源代码中的注释 https://docs.djangoproject.com/en/2.0/_modules/django/views/decorators/debug/ 所示)。

当我继续测试 View 时,我想确保对敏感信息的这种保护仍然存在(我没有错误地删除函数的装饰器或其他东西)。

我知道,由于装饰器应用于我的函数,我无法直接从 View 测试中测试它。

但是,例如,使用 @login_required 装饰器,我可以使用 assertRedirects 测试其效果(如此处所述 How to test if a view is decorated with "login_required" (Django) )。

我一直在寻找一种方法来做到这一点,但找不到有效的方法。

我想到了这样的事情:

def test_senstive_post_parameters(self):
request = RequestFactory().post('create_user', data={})
my_sensitive_parameters = ['password']
self.assertEqual(
request.sensitive_post_parameters,
my_senstive_parameters
)

但这给了我一个

AttributeError: 'WSGIRequest' object has no attribute 'sensitive_post_parameters'

如有任何帮助,我们将不胜感激。即使它告诉我我不应该尝试测试这个,尽管我真的很想这样做,因为这似乎是一个重要的行为,我应该确保在以后修改它时保留在我的代码中。

最佳答案

您已经使用 RequestFactory 创建了一个请求,但您尚未实际使用它。要测试 View 的效果,您需要导入 View 并调用它。

from myapp.views import create_user

def test_senstive_post_parameters(self):
request = RequestFactory().post('create_user', data={})
response = create_user(request)
my_sensitive_parameters = ['password']
self.assertEqual(
request.sensitive_post_parameters,
my_senstive_parameters
)

关于python - django View 中的单元测试sensitive_post_parameters装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50232478/

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