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用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
Python实现数据库编程方法详解
Jun 09 Python
Python工程师面试题 与Python基础语法相关
Jan 14 Python
以一个投票程序的实例来讲解Python的Django框架使用
Feb 18 Python
python3.6 实现AES加密的示例(pyCryptodome)
Jan 10 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
对python 匹配字符串开头和结尾的方法详解
Oct 27 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 Python
tensorboard实现同时显示训练曲线和测试曲线
Jan 21 Python
用python获取txt文件中关键字的数量
Dec 24 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 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
深入apache host的配置详解
2013/06/09 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
orm获取关联表里的属性值
2016/04/17 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
一个原生的用户等级的进度条
2010/07/03 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
自写的jQuery异步加载数据添加事件
2014/05/15 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
安装python及pycharm的教程图解
2019/10/10 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
大学自我鉴定
2013/12/20 职场文书
怎样写好自荐信和推荐信
2013/12/26 职场文书
2014年保密工作总结
2014/11/22 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
亮剑观后感600字
2015/06/05 职场文书
2016幼儿教师自荐信范文
2016/01/28 职场文书
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server
Nginx HTTP跳转至HTTPS
2022/05/15 Servers