如何在我的场景之间保持数据库清洁?

时间:2015-06-05 11:51:11

标签: django bdd django-testing lettuce

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

  • 场景1:鉴于我的用户已收到电子邮件foo@bar.com
  • 场景2:鉴于我的用户已收到电子邮件foo@bar.com

场景2 引发错误,指出已存在foo@bar.com的记录。我认为我需要在方案之间设置一个清理数据库的钩子。

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

1 个答案:

答案 0 :(得分:0)

在两种方案中使用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