Django에서 ChoiceField
양식을 테스트하려고 시도했습니다. Django Form ChoiceField를 테스트하는 방법
ChoiceField
와
Form
있습니다
[('Bronze', 'Bronze ($10.00 per month)'),
('Silver', 'Silver ($20.00 per month)')]
나는 다음과 같은 방법으로 테스트하려고 :
class PickPlanForm(forms.Form):
"Set the `plan` session cookie for choice here."
plan_choices = Plan.objects.get_choices()
# Field
plan = forms.ChoiceField(required=True, choices=plan_choices)
이 내 plan_choices
의 튜플 목록입니다
response = self.client.post(reverse('payment:register_step3'),
{'plan': 'Bronze'}, follow=True)
self.assertRedirects(response, reverse('payment:register_step4'))
그러나 테스트를 실행할 때 나는 내가 사용하고
Traceback (most recent call last):
File "/Users/aaron/Documents/djcode/textress_concierge/textress/main/tests/test_views.py", line 170, in test_register_step3
self.assertRedirects(response, reverse('payment:register_step4'))
File "/Users/aaron/Documents/virtualenvs/textress/lib/python3.4/site-packages/django/test/testcases.py", line 263, in assertRedirects
(response.status_code, status_code))
AssertionError: False is not True : Response didn't redirect as expected: Response code was 200 (expected 302)
:
Django 1.6.8
Python 3.4
나는 이것이 내가 놓친 것을 쉽게 뭔가 생각하고 있어요 EP 오류 추적을 받고? 추가보기보기에
from django.views.generic import FormView
from braces.views import LoginRequiredMixin
class PickPlanView(LoginRequiredMixin, FormView):
"""
Step #3 of Registration
Pick a Plan, and save the Plan as a `session cookie` before creating
the Stipe Customer/Subscription using the Plan Choice.
"""
template_name = 'main/hotel_form.html'
form_class = PickPlanForm
success_url = reverse_lazy('payment:register_step4')
authenticated_redirect_url = settings.VERIFY_LOGOUT_URL
def get_form_kwargs(self):
"""Add the `request` Obj to Form, so I can set the PlanPick as a
session cookie for the time being."""
kwargs = super().get_form_kwargs()
kwargs['request'] = self.request
return kwargs
참고 :
그냥 양식 선택을 받아
는편집 감사합니다.
수동으로 테스트 할 때 작동합니다.
이전에 ChoiceField
을 테스트하지 않았기 때문에 Django ChoiceField Test
부분에 문제가 있습니다.
보기가 보이지 않으면 테스트가 실패한 이유를 알기가 정말 어렵습니다. – Brandon
정확히 어떻게''payment : register_step4''로 리다이렉트합니까? 리디렉션은''payment : register_step3''의 POST 핸들러에서 발생합니까? – sthzg
@Brandon 내보기를 추가했습니다. 도와 줘서 고마워. 저에게 알려주세요. 기본적으로 수동으로 테스트 할 때 ChoiceField Test 구문 오류이거나 잘못된 {{choice ':'value '}'조합이라고 생각하게됩니다. 감사합니다 –