# 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' 没有被创建,但我的表单工作正常。 如何模拟测试用例中的输入? self.create_url 重定向到正确的 url,模板中带有表单的那个,这样的表单很好用,但是当我在测试中编写响应时,我作为第二个参数传递的字典似乎没有通过。

#1楼 票数:0

如果表单无效,它只是在页面上重新呈现表单 - 这会产生状态 200,而不是 302。此外,在表单无效的情况下,为什么要发送重定向状态并不明显。

如果此端点仅用于 POST 请求,那么您需要在模板中显示表单错误 或者,如果您认为在您的情况下重定向是更好的选择,如果is_valid()返回 false 只需执行redirect

  ask by Brocante translate from so

未解决问题?本站智能推荐:

1回复

Django单元测试删除在测试中创建的文件

我正在使用 DRF 视图测试。 在我的测试中,我创建了在测试运行后要删除的文件。 我在我的setUp方法中使用addCleanup来删除目录。 它基本上有效,但是当我运行我的完整单元测试集时,一个目录不会被删除(我认为它是第一个创建的)。 这是相关的代码:
1回复

如何在Django中测试与时间相关的功能?

我正在编写一个记录事件时间的应用程序。 对于单元测试,我通常会使用猴子修补程序将伪造的datetime.time替换为假的,以便我可以对其进行正确的测试。 我正在尝试使用Selenium进行端到端测试,并在单独的程序中使用python manage.py test ,而不是使用python
3回复

如何在测试Django中禁用CSRF?

我在使用csrf令牌测试视图时遇到问题。 这段代码 返回带有CSRF隐藏输入的HTML。 我需要将它与以前的HTML进行比较, 没有隐藏的CSRF输入。 因此断言失败。 如何在测试客户端中禁用CSRF渲染?
1回复

如何在Django中测试文件响应?

我有一个生成并返回CSV文件的API: 当我从浏览器调用它时,这工作正常,但我无法弄清楚如何编写调用API的测试并检查CSV内容是否应该是什么。 如果我: 这只是打印三个字节,很可能在概念上完全错误。 如何在测试中获取CSV文件响应的内容?
2回复

你如何在Django中测试模型字段类型?

我正在尝试测试字段是否实际上是主键。 但是测试正在通过,没有出现异常。 我的模型定义: 使用 Django 3.0.7 版
1回复

如何在Django中测试表格?

我的模型如下所示: 和看起来像这样的形式 因此,当用户转到我的索引文件时,他会找到两种形式,一种是他的名字,另一种是汽车的名字,提交后将在数据库中创建。 所以现在我在外壳程序中,想要测试一下,但是我不确定什么是正确的sytnax,我尝试了一下: 但我总是得到一个 Index
6回复

如何在Django中调试失败的测试?

如何调试我的测试? 例如,我 POST 创建一个条目并期望它验证并返回特定页面。 它适用于浏览器和 shell,但测试是唯一失败的事情(讽刺的是!)。 我想将响应打印到控制台或其他东西,以便我可以读取错误或您有什么。 但我只能看到我在视图中print东西。 不确定是否有必要,但这里是来自tests.
1回复

您如何在Django测试中处理文件

我有一个具有文件字段的模型,并且我或多或少都在测试该模型,如下所示: 有没有更好的方法来测试文件? 我测试事物的方式确实有些古怪。