如何使用测试客户端测试Django3.0CreateView的“ form_valid”方法和参数?

问题描述

一些信息

由于某种原因,我正在重写form_valid方法。

我要做什么

我想测试form_valid实例,尤其是它的参数。为此,我正在使用Django's test client

某些代码

models.py

class MyModel(models.Model):
    my_model_text = models.CharField(max_length=100)
    my_model_date = models.DateTimeField(
        'my model date',auto_now_add=True)

views.py

class CreateMyModelView(LoginRequiredMixin,generic.edit.CreateView):

    model = MyModel
    template_name = 'myapp/create-my-model.html'
    form_class = CreateMyModelForm

    def post(self,request=None,*args,**kwargs):

        # do something here
        form = self.get_form()
        if form.is_valid():
            return self.form_valid(form,request)
        else:
            return self.form_invalid(form)

    def form_valid(self,form,request):

        # do something else here
        my_model_text = form.cleaned_data['my_model_text']
        MyModel.objects.create(my_model_text=my_model_text)

        return redirect(reverse('myapp:mypage'))

forms.py

class CreateMyModelForm(forms.ModelForm):

    class Meta:
        model = MyModel
        fields = ['my_model_text']

tests.py

class CreateMyModelViewTests(TestCase):

    @classmethod
    def setUpTestData(cls):

        cls.my_auth_user = User.objects.create(
            username='my_auth_user')
        cls.my_auth_user.set_password('my_auth_password')
        cls.my_auth_user.save()

    def test_form_valid(self):

        client = self.client
        client.login(
            username='my_auth_user',password='my_auth_password')
        # post response ? #

问题

我该如何测试form_valid通过测试客户端获得的参数(不是form对象的实例,而是form_valid方法本身)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)