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使用reportlab将目录下所有的文本文件打印成pdf的方法
May 20 Python
python读取文件名称生成list的方法
Apr 27 Python
对python添加模块路径的三种方法总结
Oct 16 Python
Python字典的核心底层原理讲解
Jan 24 Python
python实现大文件分割与合并
Jul 22 Python
python 有效的括号的实现代码示例
Nov 11 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
OpenCV Python实现拼图小游戏
Mar 23 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 Python
总结三种用 Python 作为小程序后端的方式
May 02 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批量生成随机用户名
2008/07/10 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
javascript 打印页面代码
2009/03/24 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
2019/07/30 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
Hadoop中的Python框架的使用指南
2015/04/22 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
Python实现购物车购物小程序
2018/04/18 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
Python中私有属性的定义方式
2020/03/05 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
Python实现上下文管理器的方法
2020/08/07 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
自考毕业生自我鉴定
2013/11/04 职场文书
中学教师岗位职责
2013/11/26 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android