Django單元測試(指定MySQL測試數(shù)據(jù)庫)

1.配置測試數(shù)據(jù)庫,在setting.py文件DATABASES中增加TEST字段

  • 注意要點:在執(zhí)行單元測試的過程中,會Django會生成臨時的數(shù)據(jù)庫,因此,連接數(shù)據(jù)庫的用戶需要有創(chuàng)建和刪除數(shù)據(jù)庫的權限
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'fast',  # 新建數(shù)據(jù)庫名
        'USER': 'root',  # 數(shù)據(jù)庫登錄名
        'PASSWORD': 'root',  # 數(shù)據(jù)庫登錄密碼
        # 單元測試數(shù)據(jù)庫
        'TEST': {
            'NAME': 'test',  # 測試過程中會生成名字為test的數(shù)據(jù)庫,測試結束后Django會自動刪除該數(shù)據(jù)庫
        }
    }
}

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')
     # 函數(shù)名必須是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.執(zhí)行單元測試命令

# 執(zhí)行fastrunner這個app下面的test.py測試用例
# 
python manage.py test fastrunner.test 

# 執(zhí)行fastrunner這個app下面的test*.py測試用例
python manage.py test fastrunner

# 執(zhí)行所有的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

OK
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).
F
======================================================================
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
?                      ++++++


----------------------------------------------------------------------
Ran 1 test in 0.004s

FAILED (failures=1)
Destroying test database for alias 'default'...
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容