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设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
python smtplib模块自动收发邮件功能(二)
May 22 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
Python可迭代对象操作示例
May 07 Python
利用python实现汉字转拼音的2种方法
Aug 12 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
Mar 06 Python
使用IPython或Spyder将省略号表示的内容完整输出
Apr 20 Python
python 中的命名空间,你真的了解吗?
Aug 19 Python
详解python的内存分配机制
May 10 Python
pytorch 两个GPU同时训练的解决方案
Jun 01 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 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
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
destoon复制新模块的方法
2014/06/21 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
浅谈$('div a') 与$('div>a')的区别
2016/07/18 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
Python获取邮件地址的方法
2015/07/10 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
基于Python列表解析(列表推导式)
2018/06/23 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
怎样写好自我鉴定
2013/12/04 职场文书
司法助理专业自荐书
2014/06/13 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
html form表单基础入门案例讲解
2021/07/21 HTML / CSS