Python编写单元测试代码实例


Posted in Python onSeptember 10, 2020

做一个简单的小实例:

目录结构如下:

Python编写单元测试代码实例

demo1.py
class MyClass():

  def __init__(self,x,y):
    self.x = x
    self.y = y

  def add(self):

    return self.x + self.y

  def sub(self):

    return self.x - self.y
import unittest
from unittset_demo.demo1 import MyClass


class MyclassTest(unittest.TestCase):
  def setUp(self) -> None:
    '''
    测试之前的准备工作
    :return:
    '''
    self.clac = MyClass(4,3)

  def tearDown(self) -> None:
    '''
    测试之后的收尾
    如关闭数据库
    :return:
    '''
    pass

  def test_add(self):
    ret = self.clac.add()
    self.assertEqual(ret,9) 

  def test_sub(self):
    ret = self.clac.sub()
    self.assertEqual(ret,-1)

if __name__ == '__main__':
  suite = unittest.TestSuite()
  suite.addTest(MyclassTest('test_add'))
  suite.addTest(MyclassTest('test_sub'))

  runner = unittest.TextTestRunner()
  runner.run(suite)

setUp就是帮我们做测试前的准备工作,比如实例化等,

tearDown可以帮我们关闭数据库等收尾操作,

一般测试方法必须以test_开头,里面可以写我们需要测试的业务逻辑,同时指定self.assertEqual()将我们的结果和运行的实际结果进行比对。

suite就是我们的测试集,之后添加测试用例,用runner实例化运行。

运行结果:

Python编写单元测试代码实例

如果我们将预计的结果写错,

def test_add(self):
    ret = self.clac.add()
    self.assertEqual(ret,2)

  def test_sub(self):
    ret = self.clac.sub()
    self.assertEqual(ret,3)

运行结果:

Python编写单元测试代码实例

同时我们还可以在django的test文件中测试自己的用例:

class StudentTest(TestCase):
 def setUp(self);
  Student.objects.create(name='jack',age=13)

 def test_student_create(self):
  obj = Student.objects.get(name='jack')
  self.assertEqual(obj.age,18)

测试是使用的模板是否正确,在terminal中输入:python manage.py test 即可测试

class HomeTest(TestCase):
  def test_home_page_renders_home_template(self):
   response = self.client.get('/home/')  # 模拟浏览器
   self.assertEqual(response.status_code,200)
   self.assertTemplateUsed(response,'home.html')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多线程编程(二):启动线程的两种方法
Apr 05 Python
python创建关联数组(字典)的方法
May 04 Python
python文件拆分与重组实例
Dec 10 Python
Python3标准库总结
Feb 19 Python
python面向对象法实现图书管理系统
Apr 19 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
在交互式环境中执行Python程序过程详解
Jul 12 Python
python解析多层json操作示例
Dec 30 Python
Python中bisect的使用方法
Dec 31 Python
Matplotlib中%matplotlib inline如何使用
Jul 28 Python
详解Python中Pyyaml模块的使用
Oct 08 Python
Python 列表反转显示的四种方法
Nov 16 Python
python super()函数的基本使用
Sep 10 #Python
Python如何实现机器人聊天
Sep 10 #Python
Python 必须了解的5种高级特征
Sep 10 #Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 #Python
利用python 读写csv文件
Sep 10 #Python
如何用Python 加密文件
Sep 10 #Python
Python 高效编程技巧分享
Sep 10 #Python
You might like
根德YB400的电路分析
2021/03/02 无线电
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
关于jquery css的使用介绍
2013/04/18 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
js中函数声明与函数表达式
2015/06/03 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
详解Python装饰器由浅入深
2016/12/09 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
医药类个人求职的自我评价
2014/02/12 职场文书
出生公证书
2015/01/23 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
退伍军人感言
2015/08/01 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js
opencv读取视频并保存图像的方法
2021/06/04 Python
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL