Django TestCase: запрос GET должен возвращать 404, но возвращать 200 в моем тесте ...? - PullRequest
0 голосов
/ 09 марта 2020

У меня есть функция pdf, которая, например, печатает резюме в формате pdf, эта функция вызывается с помощью url / randomization / pdf /? Пациента = CIV-TR-001 & medicament = 8 & type = 1

, если параметры GET отсутствуют или не действительный, он возвращает ошибку 404 или 500, и это правильное поведение

Я хочу сделать тест для этого, но даже если я пропущу пустой «пациент» в моем тесте, он всегда вернет status_code = 200 (/ randomization / pdf /? Patient = & Medicament = 8 & type = 1), когда я вызываю этот URL в моем приложении, я правильно перенаправлен на мою страницу 404 ...

Я не понимаю, почему

url.py

app_name='randomization'
urlpatterns = [
    path('pdf/', views.pdf, name='pdf'),
]

views.py

@login_required
def pdf(request): 
...

    # Données du formulaire de confirmation de randomisation
    patient =  get_object_or_404(Randomisation, ran_num = request.GET.get('patient'))
...  


    if request.GET.get('medicament') == '':
        med = None
    else:
        med = request.GET.get('medicament')
    dru =  get_object_or_404(Medicament, med_ide = med)

...

    return FileResponse(buffer, as_attachment=True, filename=form + ' ' + pat +'.pdf')

test.py

class IndexPageTestCase(TestCase):
    def setUp(self):
        self.client = Client(HTTP_ACCEPT_LANGUAGE='en')
        self.pays = Pays.objects.create(pay_ide = 1,pay_nom_eng = 'Ivory Coast',pay_nom_fra = 'Côte d Ivoire',pay_abr = 'CIV')
        self.region = Region.objects.create(reg_ide = 1,pay = self.pays,reg_nom = 'Region 1',reg_abr = 'RE1')
        self.site = Site.objects.create(sit_ide = 1,reg=self.region,sit_typ = 'National',sit_nom_eng = 'PACCI',sit_nom_fra = 'PACCI',sit_abr = 'PA')
        self.user = User.objects.create_user('Slater','slater@surfeur.com','mereva2019')
        self.profile = Profile.objects.create(user=self.user,site = self.site)
        self.patient = Randomisation.objects.create(ran_num='CIV-TR-001',ran_dat='2020-03-09',ran_inv='Fanning',ran_pro=1,ran_crf_inc=1,ran_tbc=3,ran_crf_eli=1,ran_cri=1,ran_sta=1,ran_vih=0,ran_bra=4,ran_med='AAA',ran_log_dat=timezone.now(),ran_log_sit='TR')
        self.medicament = Medicament.objects.create(med_dru=1,med_num='AAA',med_sit='TR',med_pay='CIV',med_dat='2020-03-09',med_eta=1,pat='CIV-TR-001')

    def test_index_page(self):
        response = self.client.post('/registration/login/', {'username': 'Slater', 'password': 'mereva2019'},follow=True)
        self.assertEquals(response.status_code,200)

    def test_pdf_page(self):
        # cas référence : informations passées en get (patient, medicament et type) sont valides
        url = '/randomization/pdf/'
        response = self.client.get(url,{'patient': self.patient.ran_num, 'medicament': str(self.medicament.med_ide),'type' : 1},follow=True)
        self.assertEquals(response.status_code,200)

        # patient = ''
        url = '/randomization/pdf/'
        response = self.client.get(url,{'patient': '', 'medicament': str(self.medicament.med_ide),'type' : 1},follow=True)
        self.assertEquals(response.status_code,404)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...