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的断言的更多相关文章

  1. 测开之路七十六:性能测试蓝图之html

    <!-- 继承base模板 -->{% extends 'base.html' %} {% block script %} <!-- 从cdn引入ace edter的js --> ...

  2. 测开之路五十五:实现类似于unittest查找case

    实现给一个路径,去查找test开头的测试用例文件 创建一个计算器的类,方便后面测试用 class Calculator(object): def add(self, x, y): return x + ...

  3. 测开之路八十六:python操作sqlite

    创建sqlite数据库,并创建表和数据 python自带sqlite3库可以创建数据库文件 导入库:import sqlite3 创建游标,指定数据库名字:con = sqlite3.connect( ...

  4. 测开之路七十六:linux变量和环境变量

    变量 赋值 variable=0,访问 $var或${var} 参数 $n 用``引住的会先执行(~键) 位置参数 环境变量/etc/profile:全局的环境变量 . bash_profile:用户 ...

  5. 测开之路五十:monggodb安装与初步使用

    mongodb下载地址:https://www.mongodb.com/download-center Robo3T下载地址:https://robomongo.org/ 安装mongodb 双击无脑 ...

  6. 测开之路三十六:常用的css选择器

    在static下新建一个css,并写入内容 /*标签选择器,label标签的颜色为红色*/label {color: red;} /*.代表类选择器,绿色*/.test {color: green;} ...

  7. 测开之路二十六:Flask基础之最小web程序

    Flask中文文档:http://docs.jinkan.org/docs/flask/ 安装Flask库 选端口号的一种方法(避免和别人选的端口冲突,小于1024的时候重新选) 最小web程序 用1 ...

  8. 测开之路八十五:python处理csv文件

    写入csv文件 一:写入字典 二:写入普通数据 读取: 第一种:普通读取 第二种:读取csv并用namedtuple映射列名,类似于使用类的实例 第三种:字典形式 import csvfrom col ...

  9. 测开之路七十五:linux常用命令

    常用命令: ls:列出文件或目录 pwd:展示当前所在的目录 mkdir:创建目录 mkdir -p :创建连续的目录 cd:切换目录 vi:编辑内容,点i开始编辑,输入::wq保存 cat 显示文件 ...

随机推荐

  1. SQL的一对多,多对一,一对一,多对多

    1.一对多:比如说一个班级有很多学生,可是这个班级只有一个班主任.在这个班级中随便找一个人,就会知道他们的班主任是谁:知道了这个班主任就会知道有哪几个学生.这里班主任和学生的关系就是一对多. 2.多对 ...

  2. JavaScript高级程序设计(第3版) 第三章 (基本概念)

    3.1 语法 1.不以数字开头的数字,字母,下划线,美元符号 2.注释:html <!-- --> css/**/ js单行// 多行/**/ 3.ES5 引入了严格模式(strict m ...

  3. 2019 Multi-University Training Contest 1 - 1004 - Vacation - 二分 - 思维

    http://acm.hdu.edu.cn/showproblem.php?pid=6581 一开始想了好几个假算法.但是启发了一下潘哥,假如时间知道的话就可以从头开始确定各个车的位置.那么直接 \( ...

  4. 2019牛客暑期多校训练营(第二场) - F - Partition problem - 枚举

    https://ac.nowcoder.com/acm/contest/882/F 潘哥的代码才卡过去了,自己写的都卡不过去,估计跟评测机有关. #include<bits/stdc++.h&g ...

  5. Codeforces Round #460 (Div. 2) B Perfect Number(二分+数位dp)

    题目传送门 B. Perfect Number time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  6. Task总结

    1.Task的优势 ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便.比如: ◆ ThreadPool不支持线程的取消.完成.失败通知等交互性 ...

  7. 云中沙箱学习笔记1-快速部署并使用MySQL数据库

    1.1 背景知识 业务背景 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle旗下产品.MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面MyS ...

  8. 07.Linux-CentOS系统库文件libaudit.so.1丢失问题

    问题:缺少共享库文件sudo: error while loading shared libraries: libaudit.so.1: cannot open shared object file: ...

  9. linux篇—Nginx反向代理负载均衡

    一.环境准备 反向代理功能架构 3台web服务器,组建出web服务器集群 web01 10.0.0.7 172.16.1.7 web02 10.0.0.8 172.16.1.8 web03 10.0. ...

  10. sed使用---转义字符

    https://blog.csdn.net/wangcg123/article/details/50667883 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义 ...