如何解决如何使用测试客户端测试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
方法本身)?
解决方法
由于CBV将当前请求存储为plot(USSMI$Dates,USSMI$Invest,type = 'l',xlab = "Dates",ylab = "ROI",col="Blue",main = "Return on $1 Invested in Market Index")
par(new=TRUE)
plot(USTB$Dates,USTB$Invest,main = "Return on $1 Invested",col="Red")
,因此您无需更改self.request
的签名。
我认为您的视图可以/应该简化为这样(并且您可以看到,form_valid
中也有注释掉的内容,因此除非您需要修改实例,否则您可以完全忽略它)使用例如请求用户)。
form_valid()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。