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

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):

我为我的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):
            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)。