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 26 Python
Python计算字符宽度的方法
Jun 14 Python
python安装cx_Oracle模块常见问题与解决方法
Feb 21 Python
matplotlib简介,安装和简单实例代码
Dec 26 Python
python如何查看微信消息撤回
Nov 27 Python
解决PyCharm控制台输出乱码的问题
Jan 16 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
dpn网络的pytorch实现方式
Jan 14 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
python实现图像随机裁剪的示例代码
Dec 10 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 Python
教你怎么用python selenium实现自动化测试
May 27 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操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
JavaScript 特殊字符
2007/04/05 Javascript
js几个验证函数代码
2010/03/25 Javascript
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
python 重定向获取真实url的方法
2018/05/11 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
Python 实现一个计时器
2020/07/28 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
财务助理岗位职责
2013/11/10 职场文书
博士论文答辩开场白
2015/06/01 职场文书
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL