【发布时间】:2021-07-22 15:55:17
【问题描述】:
所以我的班级中有这个 ForeignKey 地址:
class Adresse(models.Model):
place = models.ForeignKey('Place', on_delete = models.CASCADE)
def __str__(self):
return self.place.city
ForeignKey 来自模型Place:
class Place(models.Model):
city = models.CharField(max_length = 100)
def __str__(self):
return self.city
当我运行服务器时,一切都按预期工作,我的 Adress 从另一个类返回外键。 我想知道如何为此编写测试,到目前为止,我的 test_models.py 文件如下所示:
class TestForeignKey(TestCase):
def test_adress_str(self):
testing_city = Adresse.objects.create(place.city = 'London')
self.assertEqual(str(testing_city), 'London')
但我收到此错误:
Traceback (most recent call last):
File "/tests/test_models.py", line 8, in test_adress_str
testing_city = Adress.objects.create(city = 'London')
File "venv/lib/python3.9/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/venv/lib/python3.9/site-packages/django/db/models/query.py", line 445, in create
obj = self.model(**kwargs)
File "/Users/jmihretab/Desktop/TEST/venv/lib/python3.9/site-packages/django/db/models/base.py", line 501, in __init__
raise TypeError("%s() got an unexpected keyword argument '%s'" % (cls.__name__, kwarg))
TypeError: Adress() got an unexpected keyword argument 'city'
谁能帮忙?
【问题讨论】:
-
你能分享一下完整的回溯吗?
-
Adresse.objects.create(place.city = 'London')这个有效的语法怎么样?你应该得到一些错误,比如SyntaxError: expression cannot contain assignment, perhaps you meant "=="? -
@AbdulAzizBarkat 是的,你是对的,这实际上返回了一个 SyntaxError,但如果我只是这样做
city = 'London'我会得到这个错误。TypeError: Adress() got an unexpected keyword argument 'city'
标签: python django unit-testing testing django-testing