为什么在 Django APITestCase 中运行两个测试时出现错误?



我为我的API进行测试。当我运行两个测试时,我在第二个测试中得到self.user = User.objects.get(pk=48)行的错误apps.users.models.DoesNotExist: User matching query does not exist.。但是,如果我只运行一个测试,则测试通过。原因是什么?

class MyTestCase(APITestCase):
def setUp(self):
user_data = []
for i in range(1, 124):
user_data.append({
'email': 'first@mail.com'+str(i),
'first_name': "firstname"+str(i),
'last_name': "lastname"+str(i),
'ip_address': "192.168.0."+str(i),
})
users = User.objects.bulk_create([User(**i) for i in user_data])
self.user = User.objects.get(pk=48)   # I get error in this line
def test_users_list(self):
...
def test_users_pagination(self):
url = reverse('users-list')
self.client.force_authenticate(self.user)
response = self.client.get(url, {'users_count': 24, 'page': 2})

在测试用例中定义的每个测试之前调用方法setUp。正在发生的事情是第一个测试运行 setUp 并创建pk值范围为 1 到 123 的用户,第二个测试创建pk值范围为 124 到 246 的用户,因此没有用户具有pk=48

尝试根据另一个属性(如email='first@mail.com48'(选择用户,您应该很好。

最新更新