【发布时间】:2017-04-23 12:05:08
【问题描述】:
在单元测试视图时,我似乎无法模拟表单的行为。
我的表单是一个简单的 ModelForm,位于profiles.forms。该视图(再次)是一个简单的视图,它检查表单是否有效,然后重定向。
views.py
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse
from profiles.forms import ProfileForm
def home(request):
form = ProfileForm()
if request.method == 'POST':
form = ProfileForm(request.POST)
if form.is_valid():
profile = form.save()
return HttpResponseRedirect(reverse("thanks"))
我的测试如下所示:
class TestViewHomePost(TestCase):
def setUp(self):
self.factory = RequestFactory()
def test_form(self):
with mock.patch('profiles.views.ProfileForm') as mock_profile_form:
mock_profile_form.is_valid.return_value = True
request = self.factory.post(reverse("home"), data={})
response = home(request)
logger.debug(mock_profile_form.is_valid.call_count) # "0"
is_valid 没有在 mock 上被调用,这意味着 ProfileForm 没有被修补。
我在哪里做错了?
【问题讨论】:
标签: django django-forms mocking django-unittest