示例代码:

from rest_framework import status
from rest_framework.serializers import Serializer
from rest_framework.test import APITestCase
from apps.models import User
class UserAPITests(APITestCase):# 此测试类运行结束后,会自动从数据库里销毁这份数据def setUp(self):# 在类里每个测试方法执行前会运行# 在此方法执行前,django会运行以下操作# 1. 重置数据库,数据库恢复到执行migrate后的状态# 每个测试方法里对数据库的操作都是独立的,不会相互影响#简单的数据在setUp里面创建kwargs = dict(mobile_phone='15999999999', password='111111')self.user = User.app_user_objects.create(**kwargs)#def tearDown(self):# 在类里每个方法结束执行后会运行,一般我们不用自己写,系统会自动调用父类的tearDown方法#passdef test_app_user_login_success(self):#所有的测试方法都要以test_开头,系统会自动测试以test_开头的方法,test_后面跟的尽量写清楚自己要干什么,不求简洁,但求详细,要让别人一看就知道你在干什么"""APP用户登录接口成功情况"""# path使用硬编码,尽量不要使用reverse反解析url,以便在修改url之后能及时发现接口地址变化,并通知接口使用人员path = '/api/api-token-auth/'data = {'mobile_phone': '15999999999', 'password': '111111'}response = self.client.post(path, data)# response.data是字典对象# response.content是json字符串对象#判断接口返回的状态码是否与自己认为的一致self.assertEquals(response.status_code,status.HTTP_200_OK,'登录接口返回状态码错误: 错误信息: {}'.format(response.content))self.assertIn('token', response.data, '登录成功后无token返回')

常用断言
assertFalse(expr, msg=None)
判断返回的是否是False
  assertTrue(expr, msg=None)
  assertEqual(first, second, msg=None)
  判断是否相等
  assertNotEqual(first, second, msg=None)
  assertAlmostEqual(first, second, places=None, msg=None, delta=None)
  assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)
  assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)
  assertListEqual(list1, list2, msg=None)
  assertTupleEqual(tuple1, tuple2, msg=None)
  assertSetEqual(set1, set2, msg=None)
  assertIn(member, container, msg=None)
  判断member是否包含在container中
  assertNotIn(member, container, msg=None)
  assertIs(expr1, expr2, msg=None)
  assertIsNot(expr1, expr2, msg=None)
  assertDictEqual(d1, d2, msg=None)
  assertDictContainsSubset(expected, actual, msg=None)
  assertItemsEqual(expected_seq, actual_seq, msg=None)
  assertMultiLineEqual(first, second, msg=None)
  assertLess(a, b, msg=None)
  assertLessEqual(a, b, msg=None)
  assertGreater(a, b, msg=None)
  assertGreaterEqual(a, b, msg=None)
  assertIsNone(obj, msg=None)
  assertIsInstance(obj, cls, msg=None)
  assertNotIsInstance(obj, cls, msg=None)
  assertRaisesRegexp(expected_exception, expected_regexp,
   callable_obj=None, *args, **kwargs)
  assertRegexpMatches(text, expected_regexp, msg=None)
  assertNotRegexpMatches(text, unexpected_regexp, msg=None)

测试接口地址
  测试接口地址建议使用硬编码,尽量不要使用reverse反解析url,原因是接口地址尽量避免改变,如果必须修改,需要以很明显的方式来提醒开发人员以便开发人员通知接口使用人员。
  测试数据准备
  有如下两种方法准备测试数据
  1.简单的数据可以在setUp()里来创建;
  2.复杂数据可以使用fixtures来写,并在赋值给测试类的fixtures属性;
  fixtures数据示例
   [{{
   “model”: “myapp.person”,
   “pk”: 1,
   “fields”: {
   “name”: “Xiaoming”,
   “phone”: “123456”
   }
   },
   {
   “model”: “myapp.person”,
   “pk”: 2,
   “fields”: {
   “name”: “xiangyu”,
   “phone”: “963852741”
   }
   }
  ]

测试覆盖率(coverage)
  在Pycharm里可以通用右键项目,选择Run ‘Test:’ with Coverage来查看测试的覆盖率。
使用Python 测试代码覆盖率统计工具 coverage.py
1:安装

pip install coverage

2:生成覆盖率统计文件

python -m coverage run --source='.' manage.py test --noinput
执行代码覆盖率统计,只需要通过coverage的run参数执行被统计代码即可。
跑完后,会自动生成一个覆盖率统计结果文件(data file):.coverage。如果要修改这个默认的文件名也可以,只要设置COVERAGE_FILE环境变量。

3:显示统计结果

python -m coverage report
有了覆盖率统计结果文件,只需要再运行report参数,就可以在命令里看到统计的结果。

restframework单元测试相关推荐

  1. springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试

    首先,maven项目中引入依赖 <dependency><groupId>junit</groupId><artifactId>junit</ar ...

  2. 写算子单元测试Writing Unit Tests

    写算子单元测试Writing Unit Tests! 一些单元测试示例,可在tests/python/relay/test_op_level3.py中找到,用于累积总和与乘积算子. 梯度算子 梯度算子 ...

  3. 写单元测试应该注意什么

    写单元测试应该注意什么 转载于:https://www.cnblogs.com/yishenweilv/p/10899695.html

  4. Atitti mybatis的单元测试attilax总结

    Atitti mybatis的单元测试attilax总结 版本mybatis 3.2.4 /palmWin/src/main/java/com/attilax/dao/mybatisTest.java ...

  5. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  6. android 找不到类文件,Android Studio单元测试找不到类文件!

    就是一个方法里面逻辑比较多,查数据库,循环等等.比较复杂,我想测试一下他.是没有返回值的,我想看运行完成之后看看最后里面的变量是不是对的 如果跑整个程序的话就太慢了, 编译,运行, 登陆 等等.太长了 ...

  7. java单元测试启动类配置_Springboot 单元测试简单介绍和启动所有测试类的方法

    最近一段时间都是在补之前的技术债,一直忙着写业务代码没有注重代码的质量,leader也在强求,所有要把单元测试搞起来了 我把单元测试分为两种 一个是service的单元测试,一个是controller ...

  8. JUnit单元测试依赖包构建路径错误解决办法

    JUnit单元测试依赖包构建路径错误解决办法: 选中报错的项目文件夹→右击选择属性(ALT+Enter)→java构建路径→库→添加库→JUnit→选择合适的Junit库版本.

  9. kotlin + springboot 整合redis,Redis工具类编写及单元测试

    参考自:  https://www.cnblogs.com/zeng1994/p/03303c805731afc9aa9c60dbbd32a323.html 1.maven依赖 <?xml ve ...

  10. rest-framework之解析器

    rest-framework之解析器 本文目录 一 解析器的作用 二 全局使用解析器 三 局部使用解析器 四 源码分析 回到目录 一 解析器的作用 根据请求头 content-type 选择对应的解析 ...

最新文章

  1. Java 数据类型转换
  2. make menuconfig错误
  3. 高等学校精品规划教材 计算机专业英语,计算机专业英语
  4. mdf与ldf文件如何还原到SQLserver数据库
  5. Button的点击事件
  6. C#控件常用设计整理大全
  7. [CQOI2009]叶子的染色(树形dp)
  8. 运行时类加载以支持不断变化的API
  9. 【1】C++面试题函数引用重载宏命名空间
  10. android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例
  11. 开发指南专题十一:JEECG微云快速开发平台--基础用户权限
  12. Linux下查看软、硬raid信息的方法
  13. 无限滑动的banner图,中间显示大图两边显示一部分,无限滚动
  14. Python List pop()方法
  15. 奥维地图显示no data(-5)解决
  16. 单片机交通灯c语言实验报告,模拟交通灯单片机实验报告.doc
  17. xp计算机u盘重装系统,u启动一键u盘安装原版XP系统教程_u启动
  18. 【优化求解】基于未来搜索算法FSA求解最优目标matlab代码
  19. easyui label显示不全_Easyui 扩展行显示细节_EasyUI 教程
  20. 华三防火墙添加web用户_h3c防火墙用户名密码怎么样设置

热门文章

  1. 双硬盘安装双系统详解
  2. 不错的源码演示:admin5源码
  3. U3D开发的逆天级大型游戏有哪些
  4. 2011年 最新Gmail改版后 申请免费的Gmail企业邮箱图文教程
  5. Server2003安装SQL2000企业版
  6. TYPE g_date_tbl_typ IS TABLE OF DATE INDEX BY VARCHAR2(1000);
  7. Unity 2D打地鼠小游戏
  8. php做seo优化,php做seo优化能力有哪些
  9. The Devil Wears Prada-2
  10. Unable to find gradle task to build