“如何修复”;Django test setUp()函数不创建Django用户;?

“如何修复”;Django test setUp()函数不创建Django用户;?,django,python-2.7,ubuntu,Django,Python 2.7,Ubuntu,我正在做django测试用例。现在我有一个问题,在django测试中创建的用户并没有显示在为测试创建的数据库中。把我的数据库名看作DB。 from django.contrib.auth.models import User,AnonymousUser from django.test import TestCase,LiveServerTestCase from django.db import connection class machinelist(TestCase): de

我正在做django测试用例。现在我有一个问题,在django测试中创建的用户并没有显示在为测试创建的数据库中。把我的数据库名看作DB。
from django.contrib.auth.models import User,AnonymousUser
from django.test import TestCase,LiveServerTestCase
from django.db import connection


class machinelist(TestCase):

    def setUp(self):

        self.user=User.objects.create_user(username="vishnu***",email="vishnu@clartrum.com",password="vishnu@12345")
        print self.user.username
        db_name = connection.settings_dict['NAME']
        print db_name

        t=raw_input("PAUSE")

    def tearDown(self):
        print 'd'

    def test1(self):#view function
        print "2"
输出将把用户名
vishnu***
和数据库名称打印为
test\u db
。但当您观察数据库时,没有数据

在代码中,当执行
raw_input
时,我将登录mysql服务器并验证
test_db
是否成功创建,以及django的表。但当我检查auth_user表时,表中没有数据

我正在使用django 1.11.20和mysql 5.6.33


为什么用户不更新数据库表?

TestCase类中的测试在事务中运行,在每个测试结束时回滚。由于默认的MySQL事务隔离级别是可重复读取的,因此从外部看不到事务中插入的数据


不过,我不确定您为什么要检查测试之外的数据。您可以从测试本身中打印它或在其上断言。

在视图中,我使用select sql查询读取表,当时它给出了空结果。view函数使用不同的mysqldb连接,我们使用python mysqldb来连接它。另外,如果我在setUpClass()中创建用户,它也可以工作。我们可以看到其中的数据(前提是没有使用超类),我看不出这与我所说的有什么矛盾。您正在使用不同的SQL连接。可重复读取意味着其他连接在提交之前不会看到插入到不同事务中的数据。但你为什么要这么做?为什么在视图中使用SQL而不是ORM,为什么使用不同的连接?我们不使用django模型,因为它有一些缺点,比如没有提供多个主键。我们公司依靠python mysql。你能回答为什么我在setUpClass()中使用它时它是可见的吗?[从这个链接。如果执行select命令,那么在整个事务中使用相同的结果。这里select命令只使用一次,在create命令之后使用。所以它应该正常工作?