class Student(models.Model): name = models.CharField(max_length=255, help_text="學生姓名") create_time = models.DateTimeField(auto_now_add=True, help_text="創(chuàng)建時間") def __str__(self): return self.name
class Teacher(models.Model): name = models.CharField(max_length=255, help_text="老師姓名") create_time = models.DateTimeField(auto_now_add=True, help_text="創(chuàng)建時間") def __str__(self): return self.name
class Classe(models.Model): name = models.CharField(max_length=255, help_text="班級名稱") teacher = models.ForeignKey(Teacher, help_text="老師") create_time = models.DateTimeField(auto_now_add=True, help_text="創(chuàng)建時間") def __str__(self): return self.name
class ClasseStudent(models.Model): student = models.ForeignKey(Student) classe = models.ForeignKey(Classe) create_time = models.DateTimeField(auto_now_add=True, help_text="創(chuàng)建時間") 測試數(shù)據(jù)
使用factory-boy來輔助構造測試數(shù)據(jù),代碼如下
class TeacherFactory(factory.DjangoModelFactory): class Meta: model = Teacher
name = factory.Sequence(lambda n: "Teacher #%s" % n)
class StudentFactory(factory.DjangoModelFactory): class Meta: model = Student
name = factory.Sequence(lambda n: "Student #%s" % n)
class ClasseFactory(factory.DjangoModelFactory): class Meta: model = Classe
name = factory.Sequence(lambda n: "Class #%s" % n)
class ClasseStudentFactory(factory.DjangoModelFactory): class Meta: model = ClasseStudent
student = factory.SubFactory(StudentFactory) classe = factory.SubFactory(ClasseFactory) 現(xiàn)在來偽造測試數(shù)據(jù)
在tests.py添加測試用例
class ModelTestCase(TestCase): def setUp(self): self.teacher_one = TeacherFactory() self.class_one = ClasseFactory(teacher=self.teacher_one) self.class_two = ClasseFactory(teacher=self.teacher_one) for i in range(40): ClasseStudentFactory(student=StudentFactory(), classe=self.class_one) for i in range(40): ClasseStudentFactory(student=StudentFactory(), classe=self.class_two) 可以看到,添加了一個老師,兩個班,每個班加入了40個學生