zoukankan      html  css  js  c++  java
  • unittest举例

    步骤:
    1.先导入unittest
    2.编写一个测试类(继承unittest.TestCase)
    3.编写测试用例类,一个方法就是一条用例
    4.加载测试用例,有三种方式:加载测试方法,加载测试类,加载测试模块
    5.执行测试,生成测试报告
    例子:
    1. 新建一个测试类:
    class mathematics:
    def two_add(self,a,b): # 两数相加
    return a+b
    def two_sub(self,a,b): # 两数相减
    return a+b
    2.编写测试方法:
    import unittest
    from ddt import ddt,data
    from wen.math import mathematics
    from wen.get_excel import DoExcel # 导入Excel测试数据
    cases=DoExcel('data_sheet.xlsx', 'add').get_data() #实例化对象 调用.get_data()的方法
    @ddt
    class TestAdd(unittest.TestCase):
    def setUp(self): # 初始化测试环境
    self.t=DoExcel('data_sheet.xlsx','add')
    print('---------开始执行---------')
    def tearDown(self): # 清理测试环境
    print('----------执行结束---------')
    @data(*cases)
    def test_two_add(self,case): # 加法计算
    res=mathematics().two_add(case.a,case.b)
    try:
    self.assertEqual(res,case.expect)
    resuit='pass'
    except Exception as e:
    resuit='Faild'
    print('断言错误:{}'.format(e))
    raise e
    finally:
    self.t.write_data1(case.id+1,6,res)
    self.t.write_data1(case.id+1,7,resuit)
    print('两数相加的结果是{}'.format(res))

    3.从Excel中获取测试数据
    from openpyxl import load_workbook  #读写   导入openpyxl模块,可以进行excel文件的读写
    class Case:
    def __init__(self):
    self.id=None
    self.title=None
    self.a=None
    self.b=None
    self.expect=None

    class DoExcel:
    def __init__(self,file_name,sheet_name):
    self.file=file_name
    self.sheet=sheet_name

    def get_data(self): #获取 数据
    # wb = load_workbook('data_sheet.xlsx') # 打开工作簿是打开你自己定义的工作薄 你这样写会比较好
    # sheet = wb['add'] #定位你定义工作薄的表单 这样写你会比较理解 你用初始化调用也可以
    wb=load_workbook(self.file) # 打开工作簿
    sheet=wb[self.sheet] # 定位表单
    cases=[] #创建空列表 存储查询后的结果
    for i in range(2,sheet.max_row+1):
    row_case=Case()
    row_case.id = sheet.cell(row=i,column=1).value
    row_case.title = sheet.cell(row=i,column=2).value
    row_case.a = sheet.cell(row=i,column=3).value
    row_case.b = sheet.cell(row=i,column=4).value
    row_case.expect = sheet.cell(row=i,column=5).value
    cases.append(row_case)
    return cases
    #因为你有加法表单也有减法表单 所以你需要定义两个方法
    def write_data1(self,row,column,value):
    wb = load_workbook(self.file) # 打开工作簿
    sheet = wb['add'] # 定位表单 这个定位一定要定位到你的加法或者减法
    sheet.cell(row,column).value=value
    wb.save('data_sheet.xlsx')
    def write_data2(self,row,column,value):
    wb = load_workbook(self.file) # 打开工作簿
    sheet = wb['sub'] # 定位表单
    sheet.cell(row,column).value=value
    wb.save('data_sheet.xlsx')
    if __name__=='__main__':
    n=DoExcel('data_sheet.xlsx', 'sub').get_data()
    print(n)

    4.加载测试用例并执行,生成报告
    import unittest   #  导入unittest
    import HTMLTestRunnerNew # 导入网页版测试报告模板
    from wen import test_add_math # 导入加法测试类
    from wen.test_add_math import TestAdd
    # 加载加法测试用例
    suite = unittest.TestSuite()
    loader=unittest.TestLoader()
    # suite.addTest(loader.loadTestsFromTestCase(test_add_math.TestAdd)) #加载测试类
    suite.addTest(loader.loadTestsFromTestCase(TestAdd)) # 加载测试类
    with open('math_add.html', 'wb') as file: 执行并生成测试报告
    runer = HTMLTestRunnerNew.HTMLTestRunner(file, 2, tester='赵文', title='数学类之加法', description='unittest')
    runer.run(suite)
     
  • 相关阅读:
    Java并发和高并发学习总结(三)- J.U.C之Atomic包
    Java并发编程和高并发学习总结(二)- Java内存模型
    Java并发编程和高并发学习总结(一)-大纲
    PHP之验证码识别
    python+flask+mongodb+whoosh实现自己的搜索引擎(一):目录
    个性化自己的二维码
    基于bootstrap3的 表格和分页的插件
    构建 shiro struts2 spring3 mybatis 的maven项目
    jsp 嵌套iframe 从iframe中表单提交并传值到外层
    构建 struts2 spring3 mybatis 的maven项目 构建 pom.xml
  • 原文地址:https://www.cnblogs.com/puti306/p/10247831.html
Copyright © 2011-2022 走看看