Python中文
首页
教程
问答
标签
搜索
登录
注册
如何将python字典转换为HttpRequest?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个<code>builtins.dict</code>字典,看起来像这样:</p> <pre><code>request = {"data": {"var": "hello", "content": "jello"}} </code></pre> <p>我正在为django中的API端点编写一个测试。我正在调用该类的<code>post</code>方法并将此请求发送给它,我正在使用<code>request.data</code>访问请求中的数据。但这当然行不通,因为进入我的<code>post</code>函数的<code>request</code>实际上是<code>django.http.HttpRequest</code>,而不是<code>builtins.dict</code>。如何使我的<code>request</code>参数是<code>HttpRequest</code>而不是<code>dict</code>,这样我的函数就可以正确地使用它了?你知道吗</p> <p>编辑:</p> <p>好的,我有一个函数,它是这样的:</p> <pre><code>class EmailView(APIView): """ Serializes POST data for sending emails. """ authentication_classes = [authentication.TokenAuthentication] permission_classes = [permissions.IsAuthenticated] def post(self, request): """ Sends an email using SES :param request: POST request :return: drf http response """ serializer = EmailSerializer(data=request.data) serializer.is_valid(raise_exception=True) args = serializer.data send_mail(args.get("subject"), args.get("message"), "info@mycomp.io", args.get("to"), fail_silently=False) return Response('Email sent.', status=status.HTTP_200_OK) </code></pre> <p>我想测试这个函数。所以,我写了这样的东西:</p> <pre><code>class EmailTests(APITestCase): def setup(self): self.user = UserProfile.objects.create_user( 'testuser', email='testuser@test.com', password='testpass') self.user.save() def init_request(self): request = {"data": {"sender": "info@mycomp.io", "to": ["test@gmail.com", "testt@gmail.com"], "subject": "Subject", "message": "Hello"}} return request def test_incorrect_email(self): request = self.init_request() reponse = EmailView.post(EmailView, request) print(reponse) </code></pre> <p>但是,当然,这不起作用,因为我在测试中通过我的发送到我的<code>post</code>的<code>request</code>不是来自<code>rest_framework.request</code>的实际请求。我想我是说我不知道写测试的正确方法是什么。。。有什么想法吗?你知道吗</p> <p>编辑:</p> <p>我的新测试。EmailView类未更改。你知道吗</p> <pre><code>class EmailTests(APITestCase): def setup(self): self.user = UserProfile.objects.create_user( 'testuser', email='testuser@test.com', password='testpass') self.user.save() def init_request(self): request = {"sender": "info@mycomp.io", "to": ["test@gmail.com", "testt@gmail.com"], "subject": "Subject", "message": "Hello"} return request def test_incorrect_email(self): request = self.init_request() factory = APIRequestFactory() request = factory.post('/v1/send_email/', request) view = EmailView() reponse = view.post(request) print(reponse) </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>为什么不直接使用<a href="https://docs.djangoproject.com/en/2.2/topics/testing/tools/#default-test-client" rel="nofollow noreferrer">django test client</a>将请求发送到视图进行单元测试呢?你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在python中从数据帧列中删除分类值?
4 回答
如何在python中从数据帧列表中删除引号
3 回答
如何在python中从数据帧创建列表
1 回答
如何在Python中从数据帧创建嵌套的JSON
9 回答
如何在Python中从数据帧显示wordcloud
1 回答
如何在Python中从数据帧的时间戳中删除字符
4 回答
如何在Python中从数据帧绘制简单绘图?
3 回答
如何在python中从数据帧行提取具有特定长度的范围?
5 回答
如何在python中从数据帧设置dict中的值
4 回答
如何在Python中从数据库中获得一个结果
3 回答
如何在python中从数据框中绘制分类条形图
10 回答
如何在Python中从数据框中选择特定细节?
8 回答
如何在python中从数据集中删除unicode
7 回答
如何在python中从数据集中删除某些数值?
2 回答
如何在python中从数据集中选择行
7 回答
如何在Python中从数组中删除元素
3 回答
如何在python中从数组中删除单个倒逗号?
1 回答
如何在python中从数组中删除对象?
1 回答
如何在python中从数组中删除引号
7 回答
如何在python中从数组中删除所有最小值
5 回答