码迷,mamicode.com
首页 > 其他好文 > 详细

测开之路五十六:实现类似unittest的断言

时间:2019-06-25 23:22:53      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:pre   fir   ima   执行   bool   file   __init__   efault   false   

 

技术图片

技术图片

技术图片

import inspect


class Case(object):
""" 实现断言 """

def __init__(self):
self.result = {} # 存断言的结果

def _assert(self, expression, message):
""" 真正执行断言的函数 """
"""
[2][1]二维数组,以a调b时b调c为例
第一个下标
如果是0,则代表当前函数(c),
如果是1,代表谁调的函数(b)
如果是2,代表谁调的函数(a)
···
第二个下标
如果是1,代表当前文件
如果是2,代表文件执行到多少行了
如果是3,代表当前执行的函数名
如果是4,代表当前执行的这块代码
···
"""
file = inspect.stack()[2][1]
line = inspect.stack()[2][2]
func = inspect.stack()[2][3]
code = inspect.stack()[2][4]
self.result.setdefault(func, {
‘file‘: file,
‘line‘: line,
‘func‘: func,
‘code‘: code,
‘result‘: {
‘status‘: expression,
‘message‘: message
}
})
if not expression:
print(message) # 断言失败打印失败信息
# raise AssertionError(message) # 断言失败抛异常

def assertEqual(self, first, second, message=‘‘):
self._assert(first == second, message)

def assertNotEqual(self, first, second, message=‘‘):
self._assert(first != second, message)

def assertIn(self, first, second, message=‘‘):
self._assert(first in second, message)

def assertNotIn(self, first, second, message=‘‘):
self._assert(first not in second, message)

def assertIs(self, first, second, message=‘‘):
self._assert(first is second, message)

def assertNotIs(self, first, second, message=‘‘):
self._assert(first is not second, message)

def assertNone(self, first, message=‘‘):
self._assert(first is None, message)

def assertNotNone(self, first, message=‘‘):
self._assert(first is not None, message)

def assertTrue(self, first, message=‘‘):
self._assert(bool(first) == True, message)

def assertFalse(self, first, message=‘‘):
self._assert(bool(first) == False, message)

测开之路五十六:实现类似unittest的断言

标签:pre   fir   ima   执行   bool   file   __init__   efault   false   

原文地址:https://www.cnblogs.com/zhongyehai/p/11087289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!