Светильники работают с response.context в Django модульных тестах? - PullRequest
0 голосов
/ 01 марта 2020

Я впервые пишу тесты для Django. До сих пор я использовал прибор, который содержит тестовые данные и проверял, что мои методы модели базы данных генерируют правильные выходные данные. Все идет нормально. Сейчас я пытаюсь проверить свои представления, проверив, что моя переменная контекста содержит то, что они должны. Но я получаю ошибку NoneType, как показано ниже. Я перепробовал все, что мог, возможно, приборы не работают с self.client.get () и response.context ()?

C:\Users\Philip\CodeRepos\Acacia2>c:/Users/Philip/CodeRepos/Acacia2/venv/Scripts/activate.bat

(venv) C:\Users\Philip\CodeRepos\Acacia2>python manage.py test journal
Creating test database for alias 'default'...
C:\Users\Philip\CodeRepos\Acacia2\venv\lib\site-packages\django\db\models\fields\__init__.py:1361: RuntimeWarning: DateTimeField Ledger.last_spreadsheet_update received a naive datetime (1970-01-01 00:00:00) while time zone support is active.
  warnings.warn("DateTimeField %s received a naive datetime (%s)"
C:\Users\Philip\CodeRepos\Acacia2\venv\lib\site-packages\django\db\models\fields\__init__.py:1361: RuntimeWarning: DateTimeField JournalEntry.last_integrity_check received a naive datetime (1970-01-01 00:00:00) while time zone support is active.
  warnings.warn("DateTimeField %s received a naive datetime (%s)"
System check identified no issues (0 silenced).
C:\Users\Philip\CodeRepos\Acacia2\venv\lib\site-packages\whitenoise\base.py:116: UserWarning: No directory at: C:\Users\Philip\CodeRepos\Acacia2\staticfiles\
  warnings.warn(u"No directory at: {}".format(root))
E.........
======================================================================
ERROR: test (journal.tests.Balances)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\Philip\CodeRepos\Acacia2\journal\tests.py", line 48, in test
    response.context['coa_groups'],
TypeError: 'NoneType' object is not subscriptable

----------------------------------------------------------------------
Ran 10 tests in 0.223s

FAILED (errors=1)
Destroying test database for alias 'default'...

(venv) C:\Users\Philip\CodeRepos\Acacia2>

urls.py

path('ledgers/show/all', views.ledgers_show_all, name='ledgers_show_all'),

Views.py

@login_required
def ledgers_show_all(request):  

    coa_groups = COAGroup.objects.all()
    total_profit_loss = 0
    for coa_group in coa_groups:
        coa_group.balance2 = 0
        coa_group.coa_sub_groups_with_balances = []            
        for coa_sub_group in coa_group.coasubgroup_set.all():
            coa_sub_group.ledgers_with_balances = []
            coa_sub_group.balance2 = 0
            coa_sub_group.display = False
            for ledger in coa_sub_group.ledger_set.all():
                ledger.balance2 = ledger.balance
                if ledger.balance2 != 0 or ledger.status != '1':
                    coa_sub_group.display = True
                coa_sub_group.balance2 += ledger.balance2
                coa_sub_group.ledgers_with_balances.append(ledger)
            coa_group.balance2 += coa_sub_group.balance2
            coa_group.coa_sub_groups_with_balances.append(coa_sub_group)
        total_profit_loss += coa_group.balance2
    return render(request, 'journal/ledgers_show_all.html',{'coa_groups': coa_groups})

Tests.py

class Balances(TestCase):
    fixtures = ['db.json', ]

    def test(self):
        response = self.client.get(reverse('journal:ledgers_show_all'))
        self.assertEqual(
            response.context['coa_groups'],
            1 # Just a test value for now
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...