Django单元测试(指定MySQL测试数据库)

1.配置测试数据库,在 setting.py 文件 DATABASES 中增加 TEST 字段

  • 注意要点:在执行单元测试的过程中,会Django会生成临时的数据库,因此,连接数据库的用户需要有创建和删除数据库的权限
  • DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'fast',  # 新建数据库名
            'USER': 'root',  # 数据库登录名
            'PASSWORD': 'root',  # 数据库登录密码
            # 单元测试数据库
            'TEST': {
                'NAME': 'test',  # 测试过程中会生成名字为test的数据库,测试结束后Django会自动删除该数据库
    

    2.编写单元测试用例test.py(一定要以test开头)

    from django.test import TestCase
    from fastuser import models
    class ModelTest(TestCase):
        def setUp(self):
                "username": "demo"
                "password": "1321"
                "email": "1@1.com"
            models.UserInfo.objects.create(username='rikasai', password='mypassword', email='lihuacai168@gmail.com')
         # 函数名必须是test开头
        def test_user_register(self):
            res = models.UserInfo.objects.get(username='rikasai')
            self.assertEqual(res.email,"lihuacai168@gmail.com")
    
  • 上面的models文件fastuser.py
    class UserInfo(BaseTable):
        用户注册信息表
        class Meta:
            verbose_name = "用户信息"
            db_table = "UserInfo"
        username = models.CharField('用户名', max_length=20, unique=True, null=False)
        password = models.CharField('登陆密码', max_length=100, null=False)
        email = models.EmailField('用户邮箱', unique=True, null=False)
    

    3.执行单元测试命令

    # 执行fastrunner这个app下面的test.py测试用例
    python manage.py test fastrunner.test 
    # 执行fastrunner这个app下面的test*.py测试用例
    python manage.py test fastrunner
    # 执行所有的app下面的test*.py测试用例
    python manage.py test
    

    4.测试结果

    (FastRunner) D:\rikasai\Code\FasterRunner>python manage.py test fastrunner.test
    Creating test database for alias 'default'...
    System check identified no issues (0 silenced).
    ----------------------------------------------------------------------
    Ran 1 test in 0.006s
    Destroying test database for alias 'default'...
    
    (FastRunner) D:\rikasai\Code\FasterRunner>python manage.py test fastrunner.test
    Creating test database for alias 'default'...
    System check identified no issues (0 silenced).
    ======================================================================
    FAIL: test_user_register (fastrunner.test.ModelTest)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "D:\rikasai\Code\FasterRunner\fastrunner\test.py", line 27, in test_user_register
        self.assertEqual(res.email,"lihuacai168@gmail.com_false")
    AssertionError: 'lihuacai168@gmail.com' != 'lihuacai168@gmail.com_false'
    - lihuacai168@gmail.com
    + lihuacai168@gmail.com_false
    ?                      ++++++
    ----------------------------------------------------------------------