我有很多很多我无法删除的迁移。因此,当我运行测试时,除非我使用--keepdb
运行它们,否则需要花费太多时间。唯一的问题是--keepdb
和setUp
方法如何协同工作。在测试的setUp
方法中,我做了类似的事情:
class APITests(APITestCase):
fixtures = ['tests/testdata.json']
def setUp(self):
username = "test"
password = "1234"
user_created = User.objects.create_user(username=username, password=password)
body = {
"username": username,
"password": password
}
cart = Cart.objects.create()
Client.objects.create(user=user_created, cart=cart)
APITestCase
只是django测试类的django rest框架包装器。我为该用户创建了一个用户,一个客户端和一个购物车。如果我使用--keepdb
重新运行测试,setUp
方法是否会创建重复的用户或购物车?在这种情况下它是如何工作的?
答案 0 :(得分:2)
setUp方法在APITests
中的每个测试用例之前运行。因为每个测试都在事务中运行,所以在每次测试结束时都会销毁所创建的任何对象。
keepdb
选项根本不会影响这一点。
您可以使用setupTestData
来提高测试效率。