单元测试用例_3.编写django单元测试用例

内容提要:

  • 使用djagno-test-plus编写djagno单元测试用例。

《Django高级实战-开发企业及问答网站》作者Jack

——学习来源

01a77746dd8194b689403e679605cfdd.png

编写单元测试用例

  • 使用djagno-test-plus第三方库,它是基于TestCase基础上增强了一些特性。

  • 在django应用下有test.py文件,该文件专门用于编写测试用例。(也可以新建tests文件,根据测试的模块不同建对应的test_models.py文件)

  • 单元测试用例需要对应用的每个函数进行断言。

  • test.py文件中,测试用例需要以test_开头。

  • asserEqual():判断2个参数值是否相同,相同则返回True。

  • model测试用例示例:

    # model文件
    from django.db import models

    from mptt.models import MPTTModel,TreeForeignKey

    class Comments(MPTTModel):
    name = models.CharField(max_length=50,verbose_name="留言名称")
    content = models.TextField(verbose_name="留言")
    parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')

    def __str__(self):
    return self.name
    # model的测试用例
    from .models import Comments
    from test_plus.test import TestCase

    # model测试用例
    class TestComment(TestCase):

    def setUp(self):
    self.c = Comments.objects.create(name='test')

    def test_str__(self):
    self.assertEqual(self.c.__str__(), 'test')
  • urls测试用例示例:

    # urls.py文件
    from django.contrib import admin
    from django.urls import path
    from Comments.views import test_mptt

    urlpatterns = [
    path('admin/', admin.site.urls),
    path('genres/', test_mptt.as_view(),name='gen'),
    ]
    # urls测试用例
    from django.urls import reverse,resolve
    from test_plus.test import TestCase
    class TestCommentUrls(TestCase):

    def setUp(self):
    pass

    # 命名路由解析为string网址
    def test_detail_reverse(self):
    self.assertEqual(reverse('gen'),'/genres/')

    # string网址解析到命名路由
    def test_detail_resolve(self):
    self.assertEqual(resolve('/genres/').view_name,'gen')
  • views测试用例示例(该测试用例使用了公共的测试基类BaseCommentCase,其他测试用例也可以使用类似方式):

    from django.shortcuts import render
    from Comments.models import Comments
    from django.views.generic.base import View

    class test_mptt(View):
    def get(self,request,*args,**kwargs):
    return render(request, 'genre.html', {'genres': Comments.objects.all()})

    def get_xx(self):
    return 'xx'
    from django.test import RequestFactory
    from .views import test_mptt
    from test_plus.test import TestCase

    class BaseCommentCase(TestCase):

    def setUp(self):
    self.factory = RequestFactory()

    class CommentView(BaseCommentCase):

    def setUp(self):
    super().setUp()
    # 下面三行表示直接给view发送一个get请求
    self.view = test_mptt()
    request = self.factory.get('/exam')
    self.view.request = request

    def test_get_xx(self):
    self.assertEqual(self.view.get_xx(),'xx')
  • python manage.py test即可执行本项目所有测试用例。

  • 测试用例全部通过的页面截图:

    c711808c21b2e6837ed04fe4bb700b9c.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值