Django UnitTest KeyError Тестирование "Стандартной" CreateForm - PullRequest
0 голосов
/ 21 октября 2019

Это мой Modell, из которого я хочу провести UnitTest CreateForm: enter image description here

И это мои UnitTests: enter image description here

Это CreateForm: enter image description here

И, наконец, вывод на консоль, когда я пытаюсь запустить Тест с:

py -3 manage.py makemigrations -v3
py -3 manage.py migrate -v3
isort -rc .
pmanage.py collectstatic --noinput -v3
py -3 manage.py test -v3
coverage3 run --source=catalog --omit=*migrations* manage.py test -v3
coverage3 report -m
py -3 manage.py runserver -v3

Это КонсольВывод: enter image description here enter image description here

Вот все изображения в обычном тексте для поиска с возможностью поиска:

models.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import uuid

from django.db import models
from django.urls import reverse


# Create your models here.
class context(models.Model):
    """Model representing a context. (for example telba.de)"""
    CONTEXT = models.CharField(verbose_name='Kontext', primary_key=True, unique=True, max_length=200,
                               help_text='')
    COUNTRYPREFIX = models.IntegerField(verbose_name='Ländervorwahl', help_text='')
    CITYPREFIX = models.IntegerField(verbose_name='Ortsvorwahl', help_text='')
    ROOTNUMBER = models.IntegerField(verbose_name='Nummer', help_text='')
    EXTENSIONSFROM = models.IntegerField(verbose_name='Nebenstellen von', help_text='')
    EXTENSIONSTILL = models.IntegerField(verbose_name='Nebenstellen bis', help_text='')
    PORTSCOUNT = models.IntegerField(verbose_name='Anzahl erlaubter Nebenstelen', help_text='')
    CALLPERMISSIONS_CHOICES = (
        (u'0', u'WorldWide'),
        (u'1', u'Europe'),
        (u'2', u'National'),
        (u'3', u'None'),
    )
    CALLPERMISSIONS = models.CharField(verbose_name='Anrufberechtigungen', max_length=1,
                                       choices=CALLPERMISSIONS_CHOICES, help_text='')

    def __str__(self):
        """String for representing the Model object context."""
        return self.CONTEXT

    def get_absolute_url(self):
        """Model representing a context."""
        return reverse('context-detail', args=[str(self.CONTEXT)])

forms.py
class contextCreateForm(ModelForm):
    # def __init__(self, context, *args, **kwargs):
    def __init__(self, *args, **kwargs):
        user = kwargs.pop('user')
        super(contextCreateForm, self).__init__(*args, **kwargs)
        if user.is_superuser:
            self.fields['CONTEXT'].queryset = context.objects.all()
        else:
            self.fields['CONTEXT'].queryset = context.objects.filter(CONTEXT=str(user))
            self.initial['CONTEXT'] = str(user)

    class Meta:
        model = context
        fields = '__all__'

tests_forms.py
    def test_contextCreateForm_ROOTNUMBER_label(self):
        print("Method: test_contextCreateForm_ROOTNUMBER_label.")
        userobj = User.objects.create_user(username='test.de', password='Password', is_superuser=True)
        formobj = contextCreateForm(None, user=userobj)
        self.assertTrue(formobj.fields['ROOTNUMBER'].label == 'Nummer')

    def test_contextCreateForm_EXTENSIONSFROM_label(self):
        print("Method: test_contextCreateForm_EXTENSIONSFROM_label.")
        userobj = User.objects.create_user(username='test.de', password='Password', is_superuser=True)
        form_data = {'CONTEXT': 'test.de', 'COUNTRYPREFIX': '49', 'CITYPREFIX': '211', 'ROOTNUMBER': '90096',
                     'EXTENSIONSFROM': '0', 'EXTENSIONSTILL': '5', 'PORTSCOUNT': '5', 'CALLPERMISSIONS': '0'}
        formobj = sipuserCreateForm(data=form_data, user=userobj)
        print("##################################DEBUG##################################")
        print(formobj.fields['EXTENSIONSFROM'].label)
        print("##################################DEBUG##################################")
        self.assertTrue(formobj.fields['EXTENSIONSFROM'].label == 'Nebenstellen von')

Console Output:
test_contextCreateForm_COUNTRYPREFIX_label (catalog.tests.tests_forms.contextCreateFormTest) ... Method: test_contextCreateForm_COUNTRYPREFIX_label.
ok
test_contextCreateForm_EXTENSIONSFROM_label (catalog.tests.tests_forms.contextCreateFormTest) ... Method: test_contextCreateForm_EXTENSIONSFROM_label.
##################################DEBUG##################################
ERROR
test_contextCreateForm_ROOTNUMBER_label (catalog.tests.tests_forms.contextCreateFormTest) ... Method: test_contextCreateForm_ROOTNUMBER_label.
ok

======================================================================
ERROR: test_contextCreateForm_EXTENSIONSFROM_label (catalog.tests.tests_forms.contextCreateFormTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\mvanthiel\Work\Projecte\Onboarding-Django\onboarding\catalog\tests\tests_forms.py", line 68, in test_contextCreateForm_EXTENSIONSFROM_label
    print(formobj.fields['EXTENSIONSFROM'].label)
KeyError: 'EXTENSIONSFROM'

----------------------------------------------------------------------
Ran 11 tests in 2.999s

FAILED (errors=1, expected failures=1)

Кто-нибудь знает почемуодин UnitTest завершается с ошибкой даже до того, как его можно будет проверить, если тест является истинным или ложным и почему он работает для ROOTNUMBER, но не для EXTENSIONSFROM?

Пожалуйста, помогите мне, если сможете.

...