1

我正在努力将 django 应用程序的所有测试移至 py.test。

我无法克服的一种情况是测试模型字段的唯一性约束是否被强制执行。

一个示例测试:

# requirements.txt
pytest
pytest-django
...


# myapp/models.py
from django.db import models

class UniqueModel(models.Model):
    unique_field = models.CharField(max_length=100, unique=True)


# myapp/tests/test_unique_model.py
from django.db import IntegrityError
import pytest
from myapp.models import UniqueModel

def test_unique(self, db):
    unique_1 = UnqiueModel(unique_field='not-unique')
    unique_1.save()
    unique_2 = UniqueModel(unique_field='not-unique')

    with pytest.raises(IntegrityError):
       unique_2.save()

此测试失败:

...
        with pytest.raises(IntegrityError):
>           unique_2.save()
E           Failed: DID NOT RAISE <class 'django.db.utils.IntegrityError'>
...

有什么指导吗?

谢谢!

4

0 回答 0