zoukankan      html  css  js  c++  java
  • python unittest模块

     1 import unittest
     2 import random
     3 
     4 
     5 class Operation(object):
     6 
     7     def __init__(self, num1=0, num2=0):
     8         if not (0 <= num1 <= 10 and 0 <= num2 <= 10):
     9             raise OutOfRangeError('number out of range (must be 0~10)')
    10         if not isinstance(num1, int) or not isinstance(num2, int):
    11             raise NotIntegerError('non‐integers can not be operate')
    12         self.operate_num1 = num1
    13         self.operate_num2 = num2
    14 
    15     def get_result(self):
    16         pass
    17 
    18 
    19 class AddOp(Operation):
    20 
    21     def get_result(self):
    22         return self.operate_num1 + self.operate_num2
    23 
    24 
    25 class MinusOp(Operation):
    26 
    27     def get_result(self):
    28         return self.operate_num1 - self.operate_num2
    29 
    30 
    31 class MultiOp(Operation):
    32 
    33     def get_result(self):
    34         return self.operate_num1 * self.operate_num2
    35 
    36 
    37 class DivideOp(Operation):
    38 
    39     def get_result(self):
    40         return self.operate_num1 / self.operate_num2
    41 
    42 
    43 class OperationFactory(object):
    44 
    45     @staticmethod
    46     def choose_operation(op):
    47         if op == '+':
    48             return AddOp()
    49         elif op == '-':
    50             return MinusOp()
    51         elif op == '*':
    52             return MultiOp()
    53         elif op == '/':
    54             return DivideOp()
    55 
    56 
    57 class OutOfRangeError(ValueError):
    58     pass
    59 
    60 
    61 class NotIntegerError(ValueError):
    62     pass
    63 
    64 
    65 class KnownValues(unittest.TestCase):
    66 
    67     def test_add_op(self):
    68         """测试加法运算是否正确"""
    69         ope_obj = OperationFactory.choose_operation('+')
    70         for i in range(0, 11):
    71             ope_obj.operate_num1 = i
    72             ope_obj.operate_num2 = random.randint(1, 10)
    73             sum1 = ope_obj.operate_num1 + ope_obj.operate_num2
    74             sum2 = ope_obj.get_result()
    75             self.assertEqual(sum1, sum2)
    76 
    77     def test_out_of_range(self):
    78         """测试出界"""
    79         for i in [-1, 11]:
    80             operate_num1 = i
    81             self.assertRaises(OutOfRangeError, Operation, operate_num1)
    82 
    83     def test_integer(self):
    84         """测试浮点数"""
    85         operate_num1 = 0.5
    86         self.assertRaises(NotIntegerError, Operation, operate_num1)
    87 
    88 
    89 if __name__ == '__main__':
    90     unittest.main()
  • 相关阅读:
    写个perl程序自动下载《南方周末》(2005年12月最后一期,38版,值得一看)
    Android 关于inflate
    Android读取系统相册图片并获得绝对地址
    Android设置一个SubMenu来更改背景颜色
    ExpandableListView(可展开的列表组件)使用方法
    Android自定义Tabs文字,背景
    Android上开发新浪微博OAuth2.0认证
    Android线程显示进度框
    Android http get/post传递参数
    总结:Upate field which lookups from Content Types
  • 原文地址:https://www.cnblogs.com/gundan/p/8317326.html
Copyright © 2011-2022 走看看