Я начал тестировать свой код, и там я написал фрагмент кода, который проверит, что если любое дублирующееся имя пытается сохранить в базе данных, возникает ошибка целостности. Сначала я хочу увидеть вашу модель:
class Company(models.Model):
name = models.CharField(max_length=30, primary_key=True,unique=True,
validators=[check_valid_characters, check_digit, check_whitespaces])
working_languages = models.ManyToManyField(ProgrammingLanguage, verbose_name='preferred languages')
employees = models.IntegerField(blank=False, null=True, verbose_name='number of employees')
address = models.CharField(max_length=100, validators=[check_whitespaces])
contact_number = models.CharField(max_length=11, verbose_name='Contact Number', validators=[MinLengthValidator(11),check_valid_mobile_number])
company_website = models.URLField(max_length=200, null=False)
def __str__(self):
return self.name
И контрольный пример. Вы можете увидеть ниже:
def test__when_company_name_duplicate__should_raise_an_error(self):
ob1 = Company(name='XYZ',employees='12',address='XYz',contact_number='01784009080',company_website='https://stackoverflow.com/')
ob2 = Company(name='XYZ',employees='13',address='XcYz',contact_number='01784009081',company_website='https://stackoverflow.com/new')
with self.assertRaises(IntegrityError):
ob1.save()
ob2.save()
После того, как я запустил свой тестовый пример, я получаю сообщение об ошибке:
>> FAIL: test__when_company_name_duplicate__should_raise_an_error (testapp.tests.MyTest)
Трассировка (последний последний вызов): файл "/home/anik/Works/assignment/task/testapp/tests.py", строка 73, в test__when_company_name_duplicate__should_raise_an_error ob2.save () AssertionError: IntegrityError не возбуждено