Python - Django 单元测试基础操作


1. app 模块下添加 test.py 文件

2. test.py

from django.test import TestCase

from apps.base.models import User


class TestDefault(TestCase):

    def test_model(self):
        """通过表测试"""

        user = User.objects.create(
            nickname='1',
            openid='22',
            unionid='33',
        )

        pingtai_obj = Article.objects.create(user=user, name='test', type=1)

        self.assertTrue(pingtai_obj)       # 断言, 校验表数据结果是否符合预期, 如果参数为空会报error, 且后面内容不会执行

        print('after...')

    def test_view(self):
        """通过接口测试"""

        data = {
            'type': 1,
            'name': 'testname11',
            'user': 'user1',
            # 'mingpian_url': 'testzhicheng33',
        }
        response=self.client.post('/api/v1/article/', data=data)

        self.assertEqual(response.status_code, 200)     # 断言, 校验状态码是否符合预期

3. settings.py, 配置测试时的临时数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'a1',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': {'charset':'utf8mb4'},
        'TEST': {
            'NAME': 'test',  # 测试过程中会生成名字为test的数据库,测试结束后Django会自动删除该数据库
            'CHARSET': 'utf8',
            'COLLATION': 'utf8_general_ci'
        }
    }
}

4. 执行测试文件

# 执行所有测试文件

python manage.py test

# 执行某个app下的测试文件 python manage.py test apps.app_name.test