Django 常用应用程序之单元测试

注明

本笔记主要参考《Django应用开发实战》《Django企业开发实战》,这两本书前者详细,后者精炼。学习之后真的是感觉自己进步了很多。值得一读,如果你遇到了值得一读的书籍,欢迎推荐给我,大家共同进步。



前言

网站开发完成之后上线之前我们必须要进行功能测试,一般的测试方法无非是使用浏览器网页,但这种方式不太方便。Django 框架自带了单元测试工具Django单元测试也是使用了python自带的unittest,Django的testTestCase继承了python的unittest.TestCase。


使用步骤

1.在APP下定义test文件并创建ModelTest类,继承自django.test.TestCase测试类。
2.重写setUp()方法,此方法一般是用来做数据初始化,如为测试提供数据信息,单元测试在允许过程中会创建一个虚拟的数据库,所以可以重写setup为测试用例提供数据支持。
3.自定义测试用例:函数名必须要以test开头。
……
4.使用命令允许test运行:

python manage.py test/python manage.py test someapp
from django.test import TestCase
from .models import PersonInfo
from django.contrib.auth.models import User
from django.test import Client


class PersonInfoTest(TestCase):
    # 添加数据
    def setUp(self):
        PersonInfo.objects.create(name='Lucy', age=10)
        PersonInfo.objects.create(name='May', age=12)

    # 编写测试用例
    def test_personInfo_age(self):
        # 编写用例
        name1 = PersonInfo.objects.get(name='Lucy')
        name2 = PersonInfo.objects.get(name='May')
        # 判断测试用例的执行结果
        self.assertEqual(name1.age, 10)
        self.assertEqual(name2.age, 12)

    # 编写测试用例
    def test_api(self):
        # 编写用例
        c = Client()
        response = c.get('/api/')
        # 判断测试用例的执行结果
        self.assertIsInstance(response.json(), dict)

    # 编写测试用例
    def test_html(self):
        # 编写用例
        c = Client()
        response = c.get('/?id=2')
        name = response.context['person'].name
        # 判断测试用例的执行结果
        self.assertEqual(name, 'May')
        self.assertTemplateUsed(response, 'index.html')


class UserTest(TestCase):
    # 添加数据
    @classmethod
    def setUpTestData(cls):
        User.objects.create_user(username='test', password='test', email='1@1.com')

    # 编写测试用例
    def test_user(self):
        # 编写用例
        r = User.objects.get(username='test')
        # 判断测试用例的执行结果
        self.assertEquals(r.email, '123@456.com')
        self.assertTrue(r.password)

    # 编写测试用例
    def test_login(self):
        # 编写用例
        c = Client()
        r = c.login(username='test', password='test')
        # 判断测试用例的执行结果
        self.assertTrue(r)

说明:

  • 判断结果是否无异常必须要使用Dajango内置断言如上面的self.assertTrue等,内置断言有许多,不此处一一列举,上面展示的已经可以满足基本需求
  • setUpTestData:与setup一致
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值