在 Django 应用程序的测试运行中使用 pytest/pytest-django 时,如何将数据保存到数据库?
我运行 pytest并按预期创建py.test --nomigrations --reuse-db -s
了 Postgres 数据库test_<configued_db_name>
,但是在测试之间似乎没有任何东西被持久化到数据库中,并且在测试运行结束时数据库为空。
import pytest
from django.contrib.auth.models import User
@pytest.mark.django_db(transaction=False)
def test_insert_user():
user = User.objects.create_user(username="test_user", email="test_user@test.com", password="test")
users = User.objects.all()
assert len(users) > 0
@pytest.mark.django_db(transaction=False)
def test_check_user():
users = User.objects.all()
assert len(users) > 0
第一个测试通过,第二个测试并没有让我怀疑是否有任何东西被持久化到数据库中。根据 pystest-django 文档@pytest.mark.django_db(transaction=False)
将不会回滚任何受装饰测试影响的内容。
谢谢,
/大卫