运行py.test时如何保存数据库数据?

时间:2016-01-29 02:13:31

标签: python pytest pytest-django

我想测试我的查询db函数。

>       assert result == 'success'
E       assert None == 'success'

但它失败了。

C:\xampp\htdocs\l1\blog>php artisan migrate


  [PDOException]
  SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (usin
  g password: YES)

该功能无法从DB获得任何结果。

我检查数据库数据,但没有看到任何记录。 (例如用户 tester@example.com

如何重写我的代码以进行测试?

如何将数据保存在数据库中?

谢谢,

1 个答案:

答案 0 :(得分:0)

这是数据库测试的工作方式。 设置django_db时,pytest将在使用后回滚数据。 但是如果你想在几个测试中使用相同的数据,你应该看看 pytest.fixtures和factory_boy喜欢:

import factory

class UserFactory(factory.DjangoModelFactory):
    class Meta:
        model = User

@pytest.fixture
def user():
  return UserFactory(email = "bla@bla.com", password = "blabla")

现在您在测试代码中应用此引用:

test_test_ok_profile(user):
  assert user.email = "bla@bla.com"