Я впервые пишу тесты для 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
)