Django тестирование ошибок при работе с иностранными ключами в models.py
Я тестирую файл models.py, который содержит два класса, один из которых Farm, а другой Batch
и Batch имеет внешний ключ, связанный с farm
При тестировании партии я проверил все остальные столбцы, но не уверен, как я должен проверить столбец внешнего ключа класса партии
models.py файл lopoks как
и класс, который я сейчас изучаю, это Batch
и тестовый файл пакета выглядит как
from django.test import TestCase
from django.db.utils import IntegrityError
from farm_management.models import Farm, Device, BatchYield, Batch
class TestBatch(TestCase):
def setUp(self):
self.batch1 = Batch.objects.create(
commodity_id="2",
commodity_variety_id="4",
acerage="90",
batch_health="100",
stage="germination",
batch_status="running",
updated_at="2021-11-26 09:27:18.464511",
created_at="2021-11-26 08:50:26.618932",
updated_by_id="1224",
created_by_id="1224",
#batch_name="(1) Apple | 2021-11-26",
commodity_name="Apple",
#start_date="2021-11-26 14:20:14.000000"
)
self.farmid = Farm.objects.get(farmer_id="1")
def test_farm(self):
self.assertEqual(self.batch1.commodity_id, "2")
self.assertEqual(self.batch1.commodity_variety_id, "4")
self.assertEqual(self.batch1.acerage, "90")
self.assertEqual(self.batch1.batch_health, "100")
self.assertEqual(self.batch1.stage, "germination")
self.assertEqual(self.batch1.batch_status, "running")
self.assertEqual(self.batch1.updated_at, "2021-11-26 09:27:18.464511")
self.assertEqual(self.batch1.created_at, "2021-11-26 08:50:26.618932")
self.assertEqual(self.batch1.updated_by_id, "1224")
self.assertEqual(self.batch1.created_by_id, "1224")
self.assertEqual(self.batch1.batch_name, "(1) Apple | 2021-11-26")
self.assertEqual(self.batch1.commodity_name, "Apple")
self.assertEqual(self.batch1.start_date, "2021-11-26 14:20:14.000000")
self.assertEqual((self.farmid.farmer_id, "1"))
Но этот код тестирования выдает ошибку
/home/admin123/igrow-api/igrow-api-backend/lib/python3.8/site-packages/storages/backends/s3boto3.py:282: UserWarning: The default behavior of S3Boto3Storage is insecure and will change in django-storages 2.0. By default files and new buckets are saved with an ACL of 'public-read' (globally publicly readable). Version 2.0 will default to using the bucket's ACL. To opt into the new behavior set AWS_DEFAULT_ACL = None, otherwise to silence this warning explicitly set AWS_DEFAULT_ACL.
warnings.warn(
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
E
======================================================================
ERROR: test_farm (farm_management.test.models.batch.TestBatch)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/admin123/igrow-api/app/farm_management/test/models/batch.py", line 10, in setUp
self.batch1 = Batch.objects.create(
File "/home/admin123/igrow-api/igrow-api-backend/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/admin123/igrow-api/igrow-api-backend/lib/python3.8/site-packages/django/db/models/query.py", line 453, in create
obj.save(force_insert=True, using=self.db)
File "/home/admin123/igrow-api/app/farm_management/models.py", line 179, in save
super(Batch, self).save(*args, **kwargs)
File "/home/admin123/igrow-api/igrow-api-backend/lib/python3.8/site-packages/django/db/models/base.py", line 726, in save
self.save_base(using=using, force_insert=force_insert,
File "/home/admin123/igrow-api/igrow-api-backend/lib/python3.8/site-packages/django/db/models/base.py", line 774, in save_base
post_save.send(
File "/home/admin123/igrow-api/igrow-api-backend/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 180, in send
return [
File "/home/admin123/igrow-api/igrow-api-backend/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 181, in <listcomp>
(receiver, receiver(signal=self, sender=sender, **named))
File "/home/admin123/igrow-api/app/farm_management/models.py", line 482, in update_batch_count
instance.farm_id.update_batch_count()
AttributeError: 'NoneType' object has no attribute 'update_batch_count'
----------------------------------------------------------------------
Ran 1 test in 0.527s
FAILED (errors=1)
Destroying test database for alias 'default'...