目录:

unittest 单元测试框架

1、写用例: Testcase

2、执行:TestSuite 类 TestLoader 类

3、比对结果(期望值/实际值):断言函数

4、结果:TestTextRunner 类

5、报告:HtmlTestReport 类

  1.  

一、写用例:TestCase 类: 

  1. 2、执行:TestSuite ,加载测试用例
  1. suite = unittest.TestSuite()
  1. 方法一:
    suite.addTest(类("函数名")) addTest要求实例化类,见截图

方法二:

  1. loader = unittest.TestLoader()
  1. suite.addTest(loader.loadTestsFromTestCase(类名)),加载测试用例类
  1. suite.addTest(loader.loadTestsFromModule(模块名)),测试用例模块
  1. 3、比对结果(期望值/实际值):断言函数
  1. try:
  2.  
  3. self.assertEqual(预期结果, 实际结果)
    except AssertionError as e:
  4.  
  5. print("错误是:{0}".format(e))
    finally:
  1.   self.wb.write_back(self.idnum+1, res, test_result)
  1.  
  1. 4、结果:TestTextRunner
  1. with open("test_results.txt", 'wb+') as file:
  1. runner = unittest.TextTestRunner(file, verbosity=2),测试结果可读性低
  2.  
  3. runner.run(suite)# 参数可以是测试用例也可以是测试套件
  1. 5、报告:HtmlTestReport
  1. with open("test_results.txt", 'wb+') as file:

  runner = HTMLTestRunnerNew.HTMLTestRunner(file,参数)

  runner.run(suite)

6、将测试用例放在excl里面读取,并把值写回到excl里面 ,思路:

  1. openpyxl import load_workbook
  1. wb = load_workbook(表名)
    sheet = wb[sheet名]
    思路:1、定义write_back函数,2、在testcase引入函数,实例化,在断言处使用,因为:断言处,对比的实际结果和测试结果
       3testsuite里面执行测试用例。增加参数等操作
    do_excle.py文件里面
  1. def write_back(self, row, ActualResult, TestResult):
    wb = load_workbook('test_data.xlsx')
    sheet = wb['test_data']
    sheet.cell(row, 6).values = ActualResult
    sheet.cell(row, 7).values = TestResult
    wb.save('test_data.xlsx')
  2.  
  3. test_case.py里面
    import write_back方法:
    实例化:
    self.wb = Doexcle()
  1. try:
  2. self.assertEqual(self.expected, res) # 方法一:断言函数的调用,调用父类里面的断言函数
    TestResult = 'PASS'
    except AssertionError as e:
    TestResult = 'FALL'
    print("测试出错了,错误是:{0}".format(e))
    raise e # 抛出错误
    finally:
    self.wb.write_back(id+1, res, TestResult)
  1. test_suite 执行用例
  1. 、数据处理,需要把excl里面的数据处理成数组的形式,方便取之
    一、列表嵌套列表:
  1. test_data = []
    # for i in range(2, 7): # 行
    # sub_data = []
    # for j in range(1, 6): # 列
    # sub_data.append(sheet.cell(i, j).value)
    #
    # test_data.append(sub_data)
    # return test_data
    二、列表嵌套字典:(此方法掌握)
  1. for i in range(1, 7):
    #
    # sub_data={}
    # sub_data['id'] = sheet.cell(i, 1).value
    # sub_data['title'] = sheet.cell(i, 1).value
    # sub_data['param_a'] = sheet.cell(i, 1).value
    # sub_data['param_b'] = sheet.cell(i, 1).value
    # sub_data['except'] = sheet.cell(i, 1).value
    # test_data.append(sub_data)
    #
    # print(test_data)
    三、列表嵌套字典:此方法最好掌握
  1. wb = load_workbook(data)
    sheet = wb[sheet]
    header = [] #取出key的值,放在列表里
    for i in range(1, 6):
    header.append(sheet.cell(1, i).value)
    print(header)
  2.  
  3. test_data = []
    for i in range(2, 8):
    sub_data = {} # 定义字典,
    for j in range(1, 6):
  4.  
  5. sub_data[header[j-1]] = sheet.cell(i, j).value # 每一行列值循环取出,key= value值
  1.    test_data.append(sub_data) # 字典append到列表里
  2.  
  3. print(test_data)
  4.  
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  

python基础知识点(unittest)的更多相关文章

  1. 最全Python基础知识点梳理

    本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象,也算是对于学习这门语言的一个总结与回顾.python的详细语法介绍可以查看官方编程手册,也有一些在线网站可以学习 python语言 ...

  2. Python基础知识点小结

    1.Python基础知识 在Python中的两种注释方法,分别是#注释和引号('''   ''')注释,#注释类似于C语言中的//注释,引号注释类似于C语言中的/*   */注释.接着在Python中 ...

  3. Python基础知识点总结

    Python基础知识与常用数据类型 一.Python概述: 1.1.Python的特点: 1.Python是一门面向对象的语言,在Python中一切皆对象 2.Python是一门解释性语言 3.Pyt ...

  4. python 基础知识点整理 和详细应用

    Python教程 Python是一种简单易学,功能强大的编程语言.它包含了高效的高级数据结构和简单而有效的方法,面向对象编程.Python优雅的语法,动态类型,以及它天然的解释能力,使其成为理想的语言 ...

  5. Python基础知识点

    自学记录: 1.字符串 python中单引号和双引号使用完全相同. 使用三引号('''或""")可以指定一个多行字符串. 转义符 '\' 反斜杠可以用来转义,使用r可以让 ...

  6. python基础知识点四

    网络编程(socket) 软件开发的架构: 两个程序之间通讯的应用大致通过从用户层面可以分为两种: 1是C/S,即客户端与服务端,为应用类的,比如微信,网盘等需要安装桌面应用的 2是B/S,即浏览器与 ...

  7. python基础知识点三

    内置函数和匿名函数 python 一共有68个内置的函数:它们就是python提供给你直接可以拿来使用的所有函数 内置函数的图:链接 :https://www.processon.com/mindma ...

  8. python 基础知识点二

    深浅copy 1对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的. l1 = [1,2,3,['barry','alex']] l2 = l1 l1[0] = 111 prin ...

  9. python 基础知识点一

    基础数据类型初始. 数字:int 12,3,45 + - * / **    int: bit_lenth()转化为2进制的最小位数. % 取余数 ps:type() 字符串转化成数字:int(str ...

随机推荐

  1. RSA算法的C++string实现(模幂算法和欧几里得算法的使用)后附思路

    void resetNumA(string numAStr); //使用string重置numB void resetNumB(string numBStr); //将数组转换为字符串,用于输出 st ...

  2. 前端学习历程--vue

    ---恢复内容开始--- 一.对比其他框架 1.react: 共同点: 使用 Virtual DOM 提供了响应式(Reactive)和组件化(Composable)的视图组件. 将注意力集中保持在核 ...

  3. 蓝桥杯c/c++省赛真题——日志统计

    标题:日志统计 [问题描述]小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有N行.其中每一行的格式是:ts id  表示在ts时刻编号id的帖子收到一个" ...

  4. 《DRN: A Deep Reinforcement Learning Framework for News Recommendation》强化学习推荐系统

    摘要 新闻推荐系统中,新闻具有很强的动态特征(dynamic nature of news features),目前一些模型已经考虑到了动态特征. 一:他们只处理了当前的奖励(ctr);. 二:有一些 ...

  5. Dataguard配置总结

    Dataguard配置总结 本例情形 在主库存在运行的情况下,增加配置dataguard备库,实现双机热备,高可用性. 主库要求,归档模式,强制归档. 主库idty 备库idty_st 1.密码文件 ...

  6. Blender学习

    学习顺序(下面为引用他人的视频或博客) 51个必须知道的blender操作 https://www.bilibili.com/video/av4619930/ Blender常用快捷键一览表 http ...

  7. MyBatis 处理sql中的 大于,小于,大于等于,小于等于

    Mybatis中的sql语句中的  “<”  和   “>”  号要用转义字符   “<”   和  ”>“ ,否则会报错! 如查找年龄大于等于指定年龄的用户信息: SELEC ...

  8. java中的函数

    1.函数:定义在类中的具有特定功能的一段独立小程序.函数也称之为方法. 为了提高代码的复用性,对代码进行抽取. 将这个部分定义成一个独立的功能.方便使用. java中对功能的定义通过函数来实现的.2函 ...

  9. vim基本命令总结

    编辑模式下i 从光标所在位置前开始插入文本I 将光标移动到当前行行首,然后在其前插入文本a 用于在光标当前所在位置之后追加新文本A 将光标移动到所在行行尾,在那里插入新文本o 在光标所在行的下面新开一 ...

  10. IP通信基础学习第三周(下)

    TTL的最值是255. 数据部分不参与检验和的计算. 接收端的结果若为0,则保留:否则,会丢弃该数据报. IP数据报选项字段是可选的,主要用于网络测试和调试. IP辅助协议ICMP的消息类型有错误消息 ...