赞
踩
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%
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。