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

作者: 梨花菜 | 来源:发表于2019-06-13 15:54 被阅读55次

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

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'...

相关文章

  • Django单元测试指定配置文件(PyCharm设置)

    创建指定配置文件编写单元测试 创建单元测试Django tests 编辑Configurationimage.pn...

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

    1.配置测试数据库,在setting.py文件DATABASES中增加TEST字段 注意要点:在执行单元测试的过程...

  • 技术博客汇总

    对微信公众号接口的单元测试 Github与Travis CI测试与部署 Django单元测试 NodeJs单元测试...

  • Django单元测试中Fixtures用法

    在使用单元测试时,有时候需要测试数据库中有数据,这时我们可以使用Django的Fixtures来生成测试数据。 基...

  • django框架 -3数据库连接

    连接mysql数据库 Django supports MySQL 5.5 and higher. django 数...

  • Django单元测试采坑之--keepdb

    Django单元测试过程中,如果不加--keepdb选项,则系统每次都会耗费很长时间删除之前创建的测试数据库,再重...

  • django单元测试总结

    一、django单元测试框架: 编写测试用例: 引用TestCase基类:django.test继承了python...

  • Django - 单元测试

    Django - 单元测试 Unit tests VS doctest Unit tests —— unittes...

  • django单元测试

    在项目开发过程中,单元测试必不可少,通过测试可以减少bug数,提升代码质量。 Django支持单元测试,在添加应用...

  • 在Django中测试

    测试简介 像所有成熟的编程语言一样,Django提供内置的单元测试功能。 单元测试是一个软件测试过程,测试软件应用...

网友评论

    本文标题:Django单元测试(指定MySQL测试数据库)

    本文链接:https://www.haomeiwen.com/subject/wresfctx.html