Django 单元测试TestCase

使用的包

pip install coverage

编写测试用例

引用TestCase基类:

django.test继承了python标准库unittest,所以自己的测试用例类继承django.test.TestCase即可:
from django.test import TestCase
class MyClassTestCase(TestCase):
    def SetUp(self):
        # 环境构造
        pass
    def test_my_func(self):
        # 测试my_func方法
        pass

如示例,一般一个测试用例类对应一个业务类,在这个测试类中完成对该业务类中各方法的单元测试。

用例执行

python manage.py test

默认用例执行语句:会发现当前目录下所有以test开头的py文件,并执行;此外用户也可以自己指定用例所在目录以及用例文件名匹配规则。

Client使用:

主要用于模仿url请求,调用并返回请求结果。
        response = self.client.get('/vpc/list')
        self.assertEquals(response.status_code, 302)
RequestFactory使用:
主要用于构造request对象,与Client对比,没有发生url接口的调用。
        request = self.request_factory.post('vpc/list', data={'start': 0, 'length': 10})
        vpc_manage = VpcManage(request)
断言(Assertions):
判断用例执行结果的主要手段,断言测试函数返回结果跟预期结果的一致性。
        self.assertEquals(res['recordsTotal'], 0)
覆盖率测试案例

运行测试

python manage.py test -v 2
Creating test database for alias 'default' ('test_assets')...
Operations to perform:
  Synchronize unmigrated apps: messages, rest_framework, rest_framework_swagger, staticfiles
  Apply all migrations: admin, assets_control, auth, contenttypes, sessions
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying assets_control.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK
System check identified no issues (0 silenced).
test_my_func (assets_control.tests.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.008s

OK

出现OK成功测试APP通过

查看覆盖率

覆盖率报告

coverage report
Name                                        Stmts   Miss  Cover
---------------------------------------------------------------
assets/__init__.py                              2      0   100%
assets/middleware.py                           22     22     0%
assets/settings.py                             36      0   100%
assets/swagger_views.py                        24     24     0%
assets/urls.py                                  7      0   100%
assets/wsgi.py                                  9      9     0%
assets_control/__init__.py                      0      0   100%
assets_control/admin.py                         1      0   100%
assets_control/apps.py                          3      3     0%
assets_control/migrations/0001_initial.py       8      0   100%
assets_control/migrations/__init__.py           0      0   100%
assets_control/mo.py                           16     16     0%
assets_control/models.py                      260     95    63%
assets_control/serializers.py                  77     36    53%
assets_control/tests.py                         7      1    86%
assets_control/url.py                           5      0   100%
assets_control/views.py                      1114    988    11%
manage.py                                       9      2    78%
util/__init__.py                                0      0   100%
util/datadict.py                               14      0   100%
util/page.py                                    6      0   100%
util/pyutil.py                                192    164    15%
---------------------------------------------------------------
TOTAL                                        1812   1360    25%
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔幻云

告诉自己是时候输出知识啦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值