Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我在django应用程序的单元测试中发现了错误_Python_Django_Web - Fatal编程技术网

Python 我在django应用程序的单元测试中发现了错误

Python 我在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,

我获取错误“ValueError:无法分配”'12A20':“Attention.rollno”必须是“Student”实例 怎么解决呢?? 当Django中存在外键时,是否有另一种测试方法? model.py

tests.py

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'
        )