1. import unittest
  2. import random
  3.  
  4. class Operation(object):
  5.  
  6. def __init__(self, num1=0, num2=0):
  7. if not (0 <= num1 <= 10 and 0 <= num2 <= 10):
  8. raise OutOfRangeError('number out of range (must be 0~10)')
  9. if not isinstance(num1, int) or not isinstance(num2, int):
  10. raise NotIntegerError('non‐integers can not be operate')
  11. self.operate_num1 = num1
  12. self.operate_num2 = num2
  13.  
  14. def get_result(self):
  15. pass
  16.  
  17. class AddOp(Operation):
  18.  
  19. def get_result(self):
  20. return self.operate_num1 + self.operate_num2
  21.  
  22. class MinusOp(Operation):
  23.  
  24. def get_result(self):
  25. return self.operate_num1 - self.operate_num2
  26.  
  27. class MultiOp(Operation):
  28.  
  29. def get_result(self):
  30. return self.operate_num1 * self.operate_num2
  31.  
  32. class DivideOp(Operation):
  33.  
  34. def get_result(self):
  35. return self.operate_num1 / self.operate_num2
  36.  
  37. class OperationFactory(object):
  38.  
  39. @staticmethod
  40. def choose_operation(op):
  41. if op == '+':
  42. return AddOp()
  43. elif op == '-':
  44. return MinusOp()
  45. elif op == '*':
  46. return MultiOp()
  47. elif op == '/':
  48. return DivideOp()
  49.  
  50. class OutOfRangeError(ValueError):
  51. pass
  52.  
  53. class NotIntegerError(ValueError):
  54. pass
  55.  
  56. class KnownValues(unittest.TestCase):
  57.  
  58. def test_add_op(self):
  59. """测试加法运算是否正确"""
  60. ope_obj = OperationFactory.choose_operation('+')
  61. for i in range(0, 11):
  62. ope_obj.operate_num1 = i
  63. ope_obj.operate_num2 = random.randint(1, 10)
  64. sum1 = ope_obj.operate_num1 + ope_obj.operate_num2
  65. sum2 = ope_obj.get_result()
  66. self.assertEqual(sum1, sum2)
  67.  
  68. def test_out_of_range(self):
  69. """测试出界"""
  70. for i in [-1, 11]:
  71. operate_num1 = i
  72. self.assertRaises(OutOfRangeError, Operation, operate_num1)
  73.  
  74. def test_integer(self):
  75. """测试浮点数"""
  76. operate_num1 = 0.5
  77. self.assertRaises(NotIntegerError, Operation, operate_num1)
  78.  
  79. if __name__ == '__main__':
  80. unittest.main()

python unittest模块的更多相关文章

  1. Python unittest模块心得(一)

    关于unittest模块的一些心得,主要是看官网的例子,加上一点自己的理解,官网地址:https://docs.python.org/3.6/library/unittest.html 基础概念介绍: ...

  2. Python unittest模块心得(二)

    基础概念介绍请参看: http://www.cnblogs.com/frost-hit/p/8295818.html 组织测试用例 unittest.TestSuite(tests=()): 除了使用 ...

  3. python unittest自动测试框架

    编写函数或者类时进行测试,确保代码正常工作 python  unittest 模块提供了代码测试工具.按照定义测试包括两部分:管理测试依赖库的代码(称为‘固件’)和测试本身. 单元测试用于核实函数的某 ...

  4. Python3+Selenium2完整的自动化测试实现之旅(六):Python单元测试模块Unittest运用

    一.Unittest单元测试框架简介 Unitest是Python下的一个单元测试模块,是Python标准库模块之一,安装完Python后就可以直接import该模块,能在单元测试下编写具体的测试用例 ...

  5. python的单元测试unittest模块

    首先需要导入unittest模块 import unittest import  HTMLTestRunner # TestCase 也就是测试用例## TestSuite 多个测试用例集合在一起,就 ...

  6. selenium + python自动化测试unittest框架学习(四)python导入模块及包知识点

    在写脚本的时候,发现导入某些模块,经常报错提示导入模块失败,这里来恶补下python导入模块的知识点. 1.模块导入时文件查找顺序 在脚本中,import xxx模块时的具体步骤: (1)新建一个mo ...

  7. python unittest基本介绍

    python内部自带了一个单元测试的模块,pyUnit也就是我们说的:unittest 1.介绍下unittest的基本使用方法: 1)import unittest 2)定义一个继承自unittes ...

  8. 从python run 和python unittest两种eclipse运行方式深入理解if __name__ == "__main__"

    在写一个简单的python测试程序的时候,发现eclipse中Run as "Python run 和 Python unittest”结果不一样?为什么会不一样? 先贴一下代码段: # - ...

  9. python unittest 测试笔记(一)

    测试最基本的原理就是比较预期结果是否与实际执行结果相同,如果相同则测试成功,否则测试失败. python 单元测试官方文档: [Python: 2.7] (https://docs.python.or ...

随机推荐

  1. Java中Iterator的fast-fail分析

    1.fail-fast简介 fail-fast机制是java集合(Collection)中的一个错误机制.当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件. 例如:当某一个线 ...

  2. 编写你的第一个web应用程序1

    在shell中运行以下命令来检查django是否已安装及其版本 python -m django --version 如果django已经安装,你应该看到安装的版本号,如果还没有安装,你会看到一个‘n ...

  3. Apache NiFi 开发 处理器使用说明

    NIFI的使用: 注意:FlowFile由[属性]和[内容]组成,在解析的过程中这个概念非常重要,因为有些组件操作的是属性,有些组件操作的是内容,在配置组件时Destination配置项的选择很重要, ...

  4. BZOJ 4523 [Cqoi2016]路由表 Trie树

    Trie树的应用题目. 在线建立一棵01 Trie树,然后按照要求用询问在上面跑,用单调栈维护答案即可. #include<iostream> #include<cstdio> ...

  5. 调用jersey发布的接口webservice,通过HttpPost传递文件

    项目媒体文件之前都是上传到七牛云处理,现在客户为了安全和私密性,准备将移动端拍摄的图片和视频传递到文件服务器,所以就想办法能不能在服务器端发布一个WebService,供移动端调用.刚好之前做的接口都 ...

  6. 存储过程之ROWTYPE 使用事例

    CREATE OR REPLACE PROCEDURE "DYLTWZDSJ_CP_BA" (YWID IN VARCHAR2, XKZBH IN VARCHAR2, FLAG O ...

  7. linux命令学习笔记(46):vmstat命令

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动 进行监控.他是对系统的整体情况进行统计,不足之处是无法对某个进程进行 ...

  8. Codeforces Gym 101190 NEERC 16 G. Game on Graph(博弈+拓扑)

    Gennady and Georgiy are playing interesting game on a directed graph. The graph has n vertices and m ...

  9. 洛谷P3252 [JLOI2012]树

    题目描述 在这个问题中,给定一个值S和一棵树.在树的每个节点有一个正整数,问有多少条路径的节点总和达到S.路径中节点的深度必须是升序的.假设节点1是根节点,根的深度是0,它的儿子节点的深度为1.路径不 ...

  10. JVM内存溢出环境备份方法

    线上Tomcat服务内存溢出,且不容易重现,又没配置JMX监控端口,如何在不重启Tomcat的情况下备份堆dump和线程dump,进而分析原因? 因为Tomcat以服务模式运行,直接用JVisualV ...