Django I';我在测试模型时遇到了一个奇怪的错误
我有两个模型,我正试图编写一些测试,但只有在添加第二个测试存根时才会出错 错误Django I';我在测试模型时遇到了一个奇怪的错误,django,django-models,Django,Django Models,我有两个模型,我正试图编写一些测试,但只有在添加第二个测试存根时才会出错 错误 Creating test database for alias 'default'... System check identified no issues (0 silenced). ..E ====================================================================== ERROR: test_project_details (projects.tes
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
..E
======================================================================
ERROR: test_project_details (projects.tests.ModelTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/chriscummings/Desktop/avenue/projects/tests.py", line 27, in test_project_details
project = Project.objects.get(pk=1)
File "/Users/chriscummings/.local/share/virtualenvs/avenue-5F5WKxqz/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Users/chriscummings/.local/share/virtualenvs/avenue-5F5WKxqz/lib/python3.8/site-packages/django/db/models/query.py", line 435, in get
raise self.model.DoesNotExist(
projects.models.Project.DoesNotExist: Project matching query does not exist.
----------------------------------------------------------------------
Ran 3 tests in 0.292s
测试
from django.test import TestCase
from .models import Project, Parcel
class ModelTest(TestCase):
def setUp(self):
self.project_details = {
'code': 'P0023213',
'state': 'SC',
'county': 'Lexington/Richland',
'description': 'A road widening.'
}
self.project = Project(**self.project_details)
self.project.save()
self.parcel_details = {
'code': '00342-34-244',
'owner': 'John Smith Inc.',
'site_address': '123 Main St',
'mailing_address': 'P.O. Box 42353'
}
self.parcel = Parcel(**self.parcel_details)
self.parcel.save()
def test_project_details(self):
project = Project.objects.get(pk=1)
self.assertEqual(project.code, self.project_details['code'])
self.assertEqual(project.state, self.project_details['state'])
self.assertEqual(project.county, self.project_details['county'])
self.assertEqual(project.description, self.project_details['description'])
print(project.description) # Prints fine if I comment out the next test.
def test_parcel_details(self): # Commenting this out makes error go away.
self.assertEqual(0,0)
from django.db import models
from django.contrib.auth import get_user_model
from django.urls import reverse
class Project(models.Model):
code = models.CharField(max_length=50)
state = models.CharField(max_length=4)
county = models.CharField(max_length=50)
description = models.CharField(max_length=255)
# users
class Parcel(models.Model):
code = models.CharField(max_length=50)
owner = models.CharField(max_length=255)
site_address = models.CharField(max_length=255)
mailing_address = models.CharField(max_length=255)
project = models.ForeignKey(Project, on_delete=models.CASCADE, null=True)
型号
from django.test import TestCase
from .models import Project, Parcel
class ModelTest(TestCase):
def setUp(self):
self.project_details = {
'code': 'P0023213',
'state': 'SC',
'county': 'Lexington/Richland',
'description': 'A road widening.'
}
self.project = Project(**self.project_details)
self.project.save()
self.parcel_details = {
'code': '00342-34-244',
'owner': 'John Smith Inc.',
'site_address': '123 Main St',
'mailing_address': 'P.O. Box 42353'
}
self.parcel = Parcel(**self.parcel_details)
self.parcel.save()
def test_project_details(self):
project = Project.objects.get(pk=1)
self.assertEqual(project.code, self.project_details['code'])
self.assertEqual(project.state, self.project_details['state'])
self.assertEqual(project.county, self.project_details['county'])
self.assertEqual(project.description, self.project_details['description'])
print(project.description) # Prints fine if I comment out the next test.
def test_parcel_details(self): # Commenting this out makes error go away.
self.assertEqual(0,0)
from django.db import models
from django.contrib.auth import get_user_model
from django.urls import reverse
class Project(models.Model):
code = models.CharField(max_length=50)
state = models.CharField(max_length=4)
county = models.CharField(max_length=50)
description = models.CharField(max_length=255)
# users
class Parcel(models.Model):
code = models.CharField(max_length=50)
owner = models.CharField(max_length=255)
site_address = models.CharField(max_length=255)
mailing_address = models.CharField(max_length=255)
project = models.ForeignKey(Project, on_delete=models.CASCADE, null=True)
尝试使用
self.project.id
或使用id代替pk
或者使用
Project.objects.create
method和必要的字段来实现。我得到“未检测到任何更改”和“未应用任何迁移”。请尝试使用self.project.id
或使用id代替pk。这似乎有效。。。但似乎设置方法并没有回滚测试之间的更改。正确的PK是2,这取决于先运行哪个测试。是的,它不会回滚测试之间的更改。