目录:

unittest 单元测试框架

1、写用例: Testcase

2、执行:TestSuite 类 TestLoader 类

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

4、结果:TestTextRunner 类

5、报告:HtmlTestReport 类

 

一、写用例:TestCase 类: 

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

方法二:

loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(类名)),加载测试用例类
suite.addTest(loader.loadTestsFromModule(模块名)),测试用例模块
3、比对结果(期望值/实际值):断言函数  
try:

    self.assertEqual(预期结果, 实际结果)
except AssertionError as e: print("错误是:{0}".format(e))
finally:
  self.wb.write_back(self.idnum+1, res, test_result)

4、结果:TestTextRunner 类
with open("test_results.txt", 'wb+') as file:
runner = unittest.TextTestRunner(file, verbosity=2),测试结果可读性低

runner.run(suite)# 参数可以是测试用例也可以是测试套件
5、报告:HtmlTestReport 类
with open("test_results.txt", 'wb+') as file:

  runner = HTMLTestRunnerNew.HTMLTestRunner(file,参数)

  runner.run(suite)

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

openpyxl import load_workbook
wb = load_workbook(表名)
sheet = wb[sheet名]
思路:1、定义write_back函数,2、在testcase引入函数,实例化,在断言处使用,因为:断言处,对比的实际结果和测试结果
   3、testsuite里面执行测试用例。增加参数等操作
do_excle.py文件里面
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') test_case.py里面
import write_back方法:
实例化:
self.wb = Doexcle()
try:

    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)
test_suite 执行用例
、数据处理,需要把excl里面的数据处理成数组的形式,方便取之
一、列表嵌套列表:
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
二、列表嵌套字典:(此方法掌握)
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)
三、列表嵌套字典:此方法最好掌握
wb = load_workbook(data)
sheet = wb[sheet]
header = [] #取出key的值,放在列表里
for i in range(1, 6):
header.append(sheet.cell(1, i).value)
print(header) test_data = []
for i in range(2, 8):
sub_data = {} # 定义字典,
for j in range(1, 6): sub_data[header[j-1]] = sheet.cell(i, j).value # 每一行列值循环取出,key= value值
   test_data.append(sub_data) # 字典append到列表里

print(test_data)   



 



 

 
 
 

 
 
												

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. Mac对gdb签名

    codesign -f -s gdb-cert $(which gdb) gdb_cert为自己创建的证书名 添加证书信任 activity-monitor双击taskgated 关闭 gdb成功运行

  2. javascript将base64编码的图片数据转换为file并提交

    /** @param base64Codes 图片的base64编码 */ function sumitImageFile(base64Codes){ var form=document.forms[ ...

  3. linux下chromedriver的安装

    很多时候,发现phantomjs被一些网站屏蔽导致我们无法达到想要的结果,一方面phantomjs也停止维护,这时候们可以使用chromedriver(谷歌)或者firefoxdriver(火狐)来代 ...

  4. redis 字符串(string)函数

    字符串(string)函数 get 命令/方法/函数 Description Get the value related to the specified key 取得与指定的键值相关联的值 Para ...

  5. Aes CBC加密

    <?php namespace app\components; use yii; class Aes { /** * This was AES-128 / CBC / PKCS5Padding ...

  6. Django model 字段类型及选项解析---转载

    model field 类型1.AutoField() 自增的IntegerField,通常不用自己设置,若没有设置主键,Django会自动添加它为主键字段,Django会自动给每张表添加一个自增的p ...

  7. Linux基础命令---mpstat显示cpu使用

    mpstat mpstat指令用来显示cpu的使用状况,将内容显示到标准输出.处理器0是第一个.还报告了所有处理器之间的全球平均活动.mpstat命令既可以在SMP机器上使用,也可以在UP机器上使用, ...

  8. Linux开局配置注意事项

    1.修改ssh配置文件远程端口号,防止攻击 sed    -ri   's/“#Port 22”/“Port 10086”/g‘    /etc/ssh/sshd_config 2.修改ssh配置文件 ...

  9. Http请求头和常见响应状态码

    请求头: Accept:指浏览器或其他客户可以接爱的MIME文件格式.可以根据它判断并返回适当的文件格式. Accept-Charset:指出浏览器可以接受的字符编码.英文浏览器的默认值是ISO-88 ...

  10. Job for network.service failed because the control process exited with error code

    转自:https://blog.csdn.net/dongfei2033/article/details/81124465 今天在centOS 7下更改完静态ip后发现network服务重启不了,翻遍 ...