django 测试 setUp 和 --keepdb
django tests setUp and --keepdb
我有很多迁移无法删除。因此,当我 运行 测试时,它会花费太多时间,除非我 运行 它们与 --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 测试 class 的 django rest 框架包装器。我为该用户创建了一个用户、一个客户和一个购物车。如果我用 --keepdb
重新 运行 测试,setUp
方法会创建重复的用户或购物车吗?在这种情况下它是如何工作的?
setUp 方法在 APITests
中的每个测试用例之前运行。因为每个测试都在一个事务中运行,所以创建的任何对象都会在每个测试结束时销毁。
keepdb
选项对此完全没有影响。
您可以使用 setupTestData
来提高测试效率。
我有很多迁移无法删除。因此,当我 运行 测试时,它会花费太多时间,除非我 运行 它们与 --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 测试 class 的 django rest 框架包装器。我为该用户创建了一个用户、一个客户和一个购物车。如果我用 --keepdb
重新 运行 测试,setUp
方法会创建重复的用户或购物车吗?在这种情况下它是如何工作的?
setUp 方法在 APITests
中的每个测试用例之前运行。因为每个测试都在一个事务中运行,所以创建的任何对象都会在每个测试结束时销毁。
keepdb
选项对此完全没有影响。
您可以使用 setupTestData
来提高测试效率。