【发布时间】:2021-01-02 16:41:03
【问题描述】:
一些信息
我正在重写 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 方法本身)?
【问题讨论】:
-
您发布的代码似乎都没有提到
session...当然您知道request.user将持有对当前登录用户的引用,如果这是您存储的信息?
标签: python django django-forms django-class-based-views django-testing