Python 我在django应用程序的单元测试中发现了错误
我获取错误“ValueError:无法分配”'12A20':“Attention.rollno”必须是“Student”实例 怎么解决呢?? 当Django中存在外键时,是否有另一种测试方法? model.py tests.pyPython 我在django应用程序的单元测试中发现了错误,python,django,web,Python,Django,Web,我获取错误“ValueError:无法分配”'12A20':“Attention.rollno”必须是“Student”实例 怎么解决呢?? 当Django中存在外键时,是否有另一种测试方法? model.py tests.py class AttendanceTest(TestCase): def setUp(self): Attendance.objects.create( rollno='12A20', class_id=121,
class AttendanceTest(TestCase):
def setUp(self):
Attendance.objects.create(
rollno='12A20',
class_id=121,
date='2020-09-03',
status='Present'
)
Attendance.objects.create(
rollno='13A20',
class_id=121,
date='2020-09-03',
status='Present'
)
def test_Attendance(self):
qs=Attendance.objects.all()
self.assertEqual(qs.count(),2)
添加学生实例以代替rollno
class AttendanceTest(TestCase):
def setUp(self):
Attendance.objects.create(
rollno=Student.objects.filter(rollno='12A20').first(),
class_id=121,
date='2020-09-03',
status='Present'
)
Attendance.objects.create(
rollno=Student.objects.filter(rollno='13A20').first(),
class_id=121,
date='2020-09-03',
status='Present'
)
def test_Attendance(self):
qs=Attendance.objects.all()
self.assertEqual(qs.count(),2)
您已经硬编码了rollno='12A20',因为这是不允许的,这就是为什么会出现此错误 另外,如果您在开发空间中进行单元测试,Django默认情况下不使用您的生产数据库 如果您想了解有关为您的模型编写单元测试的更多信息,请访问以下官方Django文档: 对于您的场景,我将执行以下操作:
class AttendanceTest(TestCase):
def setUp(self):
# create student and class instance/object
student = Student.objects.create(name = 'Anirduh')
# You haven't given us information about the Class class
class = Class.objects.create(...........)
Attendance.objects.create(
rollno=student, # just pass in the student instance/object
class_id=class, # just pass in the class instance/object
date='2020-09-03',
status='Present'
)
class AttendanceTest(TestCase):
def setUp(self):
# create student and class instance/object
student = Student.objects.create(name = 'Anirduh')
# You haven't given us information about the Class class
class = Class.objects.create(...........)
Attendance.objects.create(
rollno=student, # just pass in the student instance/object
class_id=class, # just pass in the class instance/object
date='2020-09-03',
status='Present'
)