手动签名 cookie 上的 Django get_signed_cookie

Django get_signed_cookie on manually signed cookie

我在我的一个视图中使用了 get_signed_cookie,并且有效。问题在于测试它,我在我的测试中使用 Django 的 django.core.signing 模块手动签署我的 cookie,盐与我的实际代码相同(我使用的是我的 settings 中的盐)。

当我进行非自动化测试时,一切都很好。我将测试中设置的 cookie 与 Django 本身设置的 cookie 进行了比较,它们的结构相同:

在我的测试中(我在我的测试中手动签署字符串 'test_cookie_value'):

{'my_cookie': 'test_cookie_value:s5SA5skGmc4As-Weyia6Tlwq_V8'}

姜戈:

{'my_cookie': 'zTmwe4ATUEtEEAVs:1YRl0a:Lg3KHfpL93HoUijkZlNphZNURu4'}

但是当我的视图尝试 get_signed_cookie("my_cookie", False, salt="my_salt") 时,返回 False

我觉得这很奇怪,虽然我试图服从测试山羊(这里是第一次 TDD'er),但我很想跳过这个测试..

我希望有人能给我一些指导,我现在一直在忽略背景中的山羊噪音。

我找到了我的解决方案。其实很简单。

我尝试根据我的测试请求设置我的 cookie,这是有道理的,因为 cookie 应该在请求中发送。一种更好的测试方法是先 GET 一个资源(设置 te cookie,这在正常的网络情况下也会发生),然后 POST 使用设置的 cookie。这很好用。