Py学习  »  Django

如何在Django中测试create函数?

Brocante • 5 年前 • 1476 次点击  
# my .views
def post_create_view(request):
    form = PostModelForm(request.POST or None)
    if form.is_valid():
        obj = form.save(commit=False)
        obj.user = request.user
        obj.save()
        form = PostModelForm()
    context = {'form': form}
    return render(request, 'form.html', context)

# my .urls
path('create/', post_create_view, name='create')

# my .test

class TestViews(TestCase):

    def setUp(self):
        self.client = Client()
        self.create_url = reverse('posts:create')
        self.user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')
        self.post1 = Post.objects.create(user=self.user, title='testpost', content='fgh')
        self.query = Post.objects.all()

    def test_blog_create_POST(self):
# this is where the error surely is
        response = self.client.post(self.create_url, {'title': 'testpost2', 'content': 'asd'})
        self.assertEqual(response.status_code, 302)
# this is where the test fail
        self.assertEqual(self.query.last().title, "testpost2")

“testpost2”无法创建,但我的表单工作正常。如何模拟测试用例中的输入?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55120
 
1476 次点击  
文章 [ 1 ]  |  最新文章 5 年前