为什么 django 不使用 unittest 显示测试结果?

Why django not display test result using unittest?

当我使用 unittest 模块测试我的模型时出现问题,即当过程成功时除了来自 [=36= 的字符串之外没有显示任何内容].我的用户迭代结果没有显示 up.What 我是东在下面:

1,models.py

    class UserManager(models.Manager):
      def hah(self):
        return None
    class User(models.Model):
                id = models.IntegerField(primary_key=True)  
                email = models.CharField(unique=True, max_length=50)
                password = models.CharField(max_length=50)
                logintime = models.IntegerField(default='')
                registertime = models.IntegerField()
                modifytime = models.IntegerField()
                loginip = models.CharField(max_length=60)
                islock = models.IntegerField()
                isavtive = models.IntegerField()
                activecode = models.CharField(max_length=45)
                role = models.CharField(max_length=1)

                objects = UserManager()
                class Meta:
                    db_table = 'user'

2,serializers.py

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id','email','password','loginip')

3,tests.py

class UserModelTest(unittest.TestCase):
    def get_user(self):
        users = User.objects.all()
        userserializer = UserSerializer(users,many=True)
        print(userserializer.data)
        print(users)
        for row in users:
            print(row.email)
        print("this is user model test")

当我运行python3.4 ./manage.py test user.tests.UserModelTest.get_user时,结果是:

Creating test database for alias 'default'...
[]
[]
this is user model test
.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK
Destroying test database for alias 'default'...

我是否遗漏了什么或对单元测试有任何误解?我注意到有人有同样的问题,他们被建议做的是添加 -- -s 选项,但不适用于 me.And 任何解决方案?提前致谢!

这是正确的显示,但您没有编写任何测试。
为了能够编写单元测试,您应该知道一些事情:

  1. 您的测试函数应该以单词 test 开头,例如 test_get_user_query,这是为了让您的测试可以从以下位置调用:
    ./manage.py test appName 这样您就不必引用测试的整个路径。
  2. 单元测试中使用的数据库与您的开发数据库是隔离的,这意味着它是完全空的,您每次要测试它时都需要填充它,对于您的示例,您应该在get_usersetUp() 函数的开始:
    User.objects.create(email='exp@me.com', password='somepass'....)(填充其余部分)以便稍后查询
  3. 使用断言来编写测试,你不应该使用打印,这是一个例子:
class UserModelTest(unittest.TestCase):
    def test_get_user_and_data_is_serialized(self):
        User.objects.create(email='exp@me.com', password='somepass'....)
        user = User.objects.all()[0]  # start testing one entry.
        self.assertEqual(user.email, 'exp@me.com', 'Incorret email') # message when test fails
        serialized_user = UserSerializer(users,many=False)
        self.assertEqual(userserializer.data, {'email': 'exp@me.com', ....}, 'oops the data is not serialized')

只需更改您要测试的数据,这只是一个示例

关于 unittest 模块还有很多要了解的,如果您需要更多帮助,请阅读此内容 https://docs.python.org/2/library/unittest.html

另请参阅 Harry J.W.Percival 的这本书,这是一个很好的资源:
http://www.obeythetestinggoat.com/

希望对您有所帮助!