django - Django 测试 - SimpleCookie 和 Session
问题描述
问题:一旦我尝试设置 cookie,我的测试客户端似乎就退出了。我有希望我的客户访问的工作区(项目)对象。访问本身工作正常,但是一旦我尝试在会话中编辑 cookie,客户端就会被注销。我的测试记录在下面。
代码
import time
from http.cookies import SimpleCookie
from django.contrib.auth.models import User
from django.test import Client, TestCase
from django.urls import reverse
from myproject.models import DataSource, Workspace
class TestSomeStuff(TestCase):
def setUp(self):
datasource1, _ = DataSource.objects.update_or_create(id=1, defaults=dict(source_name="Source 1"))
workspace1, _ = Workspace.objects.get_or_create(id=1, defaults=dict(project_name="Project 1",
datasource=datasource1))
self.workspace_view_url = reverse("workspace", args=[workspace1.id])
self.client = Client()
print(self.client.get(self.workspace_view_url)) # 302 - redirect to login page as expected
self.client.force_login(User.objects.get_or_create(username='testuser')[0])
print(self.client.get(self.workspace_view_url)) # 200 - as expected
time.sleep(2)
print(self.client.get(self.workspace_view_url)) # 200 - as expected
time.sleep(2)
self.client.cookies = SimpleCookie()
print(self.client.get(self.workspace_view_url)) # 302 - why?
def test_my_test(self):
pass
解决方案
该行self.client.cookies = SimpleCookie()
会擦除所有 cookie - 包括“sessionid”和“csrftoken”。我把它改成self.client.cookies["cookie_key"] = "cookie_value"
推荐阅读
- function - 如何根据 Anylogic 中的另一个参数改变一个参数?
- visual-studio-2017 - 如何在 Visual Studio 2017 的解决方案资源管理器中隐藏项目
- c# - asp.net-core / c# - 检查具有 2 个主键的表中是否存在行?
- angular - .net core 1.1 angular 5 windows 身份验证 401 未经授权
- javascript - 没有为直接子元素返回元素高度
- oracle - 带有 if 语句的 Oracle 游标错误
- javascript - React Native + Redux Form - 在 maxLength 上转到下一个字段
- c - 在调试 C 代码时处理模棱两可的结构声明
- c# - 在 C# 中从 SoftwareBitmap 创建子位图
- ios - 适用于 iOS 的 Realm DB 引发架构不匹配错误,提供架构版本 84 小于上次设置的版本 86