【问题标题】:How can i keep my database clean between my scenarios?如何在我的场景之间保持数据库清洁?
【发布时间】:2015-06-05 11:51:10
【问题描述】:

我有两个在数据库中创建记录的方案。假设我正在使用foo@bar.com 创建一个用户。

  • 场景 1: 假设我有一个电子邮件用户 foo@bar.com
  • 场景 2: 假设我有一个电子邮件用户 foo@bar.com

场景 2 引发了一个错误,指出已经有一条带有 foo@bar.com 的记录。我认为我需要设置一个钩子来清理场景之间的数据库。

这种情况的最佳做法是什么?在场景之间调用flushdb 命令?还是事务回滚?或者还有什么?

【问题讨论】:

  • Flushdb 是一个不错的选择。您希望场景彼此独立并且在某种程度上是“端到端”的,因此为每个场景重建数据库。

标签: django bdd django-testing lettuce


【解决方案1】:

在这两种情况下都使用get_or_create 方法。不要忘记get_or_create 返回一个元组:

>>> from django.contrib.auth.models import User
>>> superman, created = User.objects.get_or_create(username='kal-el')
>>> superman
<User: kal-el>
>>> created
True
>>> superman_returns, created_again = User.objects.get_or_create(username='kal-el')
>>> superman_returns
<User: kal-el>
>>> created_again
False

https://docs.djangoproject.com/en/1.8/ref/models/querysets/#get-or-create

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多