Как написать правильный код для проверки целостности в Django? - PullRequest
0 голосов
/ 15 марта 2020

Я начал тестировать свой код, и там я написал фрагмент кода, который проверит, что если любое дублирующееся имя пытается сохранить в базе данных, возникает ошибка целостности. Сначала я хочу увидеть вашу модель:


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 не возбуждено

...