将 Django 的 RequestFactory() 方法设置为等于 'POST'
Set Django's RequestFactory() method to equal 'POST'
示例视图函数:
def example_view(request):
if request.method == "POST":
print(request.session['Key'])
return HttpResponse("Success")
测试视图的测试用例:
from django.contrib.sessions.backends.db import SessionStore
from django.test import RequestFactory, TestCase
from website.views import example_view
class ExampleTestCase(TestCase):
def test_example(self):
# Create request and session
request = RequestFactory()
request.session = SessionStore()
request.session['Key'] = "Value"
response = example_view(request)
self.assertEquals(response.status_code, 200)
urls.py 文件以备不时之需:
urlpatterns = [
path('example', views.example_view, name="example_view"),
]
错误响应:
AttributeError: 'RequestFactory' object has no attribute 'method'
没有:
if request.method == 'POST':
这按预期工作。
如何设置 request.method 等于 post?
RequestFactory
给你一个工厂,而不是一个请求,要获得你必须调用工厂的请求,就像你对 Django 测试客户端所做的那样:
factory = RequestFactory()
request = factory.post('/your/view/url')
response = example_view(request)
示例视图函数:
def example_view(request):
if request.method == "POST":
print(request.session['Key'])
return HttpResponse("Success")
测试视图的测试用例:
from django.contrib.sessions.backends.db import SessionStore
from django.test import RequestFactory, TestCase
from website.views import example_view
class ExampleTestCase(TestCase):
def test_example(self):
# Create request and session
request = RequestFactory()
request.session = SessionStore()
request.session['Key'] = "Value"
response = example_view(request)
self.assertEquals(response.status_code, 200)
urls.py 文件以备不时之需:
urlpatterns = [
path('example', views.example_view, name="example_view"),
]
错误响应:
AttributeError: 'RequestFactory' object has no attribute 'method'
没有:
if request.method == 'POST':
这按预期工作。
如何设置 request.method 等于 post?
RequestFactory
给你一个工厂,而不是一个请求,要获得你必须调用工厂的请求,就像你对 Django 测试客户端所做的那样:
factory = RequestFactory()
request = factory.post('/your/view/url')
response = example_view(request)