Python 为什么在Django APITestCase中运行两个测试时出错?
我为我的API做测试。当我运行两个测试时,在第二个测试中,我得到错误Python 为什么在Django APITestCase中运行两个测试时出错?,python,django,django-rest-framework,python-unittest,django-testing,Python,Django,Django Rest Framework,Python Unittest,Django Testing,我为我的API做测试。当我运行两个测试时,在第二个测试中,我得到错误apps.users.models.DoesNotExist:用户匹配查询不存在。行self.User=User.objects.get(pk=48)。但若我只运行一个测试,那个么测试就通过了。原因是什么 class MyTestCase(APITestCase): def setUp(self): user_data = [] for i in range(1, 124):
apps.users.models.DoesNotExist:用户匹配查询不存在。
行self.User=User.objects.get(pk=48)
。但若我只运行一个测试,那个么测试就通过了。原因是什么
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
。第一个测试运行设置并创建值范围为1到123的pk
用户,第二个测试创建值范围为124到246的pk
用户,因此没有pk=48的用户
尝试根据另一个属性选择用户,如email=first@mail.com48“
,您应该很好。在您在测试用例中定义的每个测试之前,都会调用方法setUp
。第一个测试运行设置并创建值范围为1到123的pk
用户,第二个测试创建值范围为124到246的pk
用户,因此没有pk=48的用户
尝试根据另一个属性选择用户,如email=first@mail.com48“
,你应该很好。Thnx。但是当我看到users[0].pk
或users[0].id
在bulk\u create
之后,我得到None
。当我看到用户[0]。电子邮件时,我得到了正确的电子邮件值。那是什么?我想你不是在用PostgreSQL吧。从bulk_create上的文档:如果模型的主键是自动字段,[bulk_create
]不会像save()那样检索和设置主键属性,除非数据库后端支持它(当前为PostgreSQL)。Thnx。但是当我看到users[0].pk
或users[0].id
在bulk\u create
之后,我得到None
。当我看到用户[0]。电子邮件时,我得到了正确的电子邮件值。那是什么?我想你不是在用PostgreSQL吧。从bulk_create上的文档:如果模型的主键是自动字段,[bulk_create
]不会像save()那样检索和设置主键属性,除非数据库后端支持它(当前为PostgreSQL)。