zoukankan      html  css  js  c++  java
  • python Unittest+excel+ddt数据驱动测试

    #!user/bin/env python
    # coding=utf-8
    # @Author  : Dang
    # @Time    : 2018/6/10 17:25
    # @Email   : 1370465454@qq.com
    # @File    : 
    # @Description:
    import xlrd
    import xlwt
    import os
    import time
    from openpyxl import load_workbook
    strtime = time.strftime('%Y-%m-%d_%H_%M_%S')
    
    
    # def readExcelDataByName(filename, sheetName):
    #     '''读取Excel文件和表名'''
    #     wb = xlrd.open_workbook(filename)
    #     # sheet=data.sheet_by_index(0)#通过索引顺序获取,0表示第一张表
    #     # sheets = data.sheet_names()#获取文件中的表名
    #     sheet = wb.sheet_by_name(sheetName)
    #     ncols = sheet.ncols
    #     # 获取行数
    #     nrows = sheet.nrows
    #     print("nrows %d, ncols %d" % (nrows, ncols))
    #     total_data=url_list=[]
    
    #     #读取url
    #     for m in range(0,nrows):
    #         # print(sheet.cell_value(m,1))
    #         # print(sheet.cell_value(m,2))
    #         # print(sheet.cell_value(m,3))
    #         # print(sheet.cell_value(m,5))
    #         url_list.append(sheet.cell_value(m,1))
    #         url_list.append(sheet.cell_value(m,3))
    #         url_list.append(sheet.cell_value(m,2))
    #         url_list.append(sheet.cell_value(m,5))
    #         total_data.append(url_list)
    #         # print(url_list)
    #         url_list=[]
    
    #     # print(total_data)
    #     return total_data
    import xlrd  
    
    import unittest  
      
    import ddt  
      
    class ExcelUtil(object):  
      
        def __init__(self, excelPath, sheetName):  
            self.data = xlrd.open_workbook(excelPath)  
            self.table = self.data.sheet_by_name(sheetName)  
              
            #get titles  
            self.row = self.table.row_values(0)  
              
            #get rows number  
            self.rowNum = self.table.nrows  
            print(self.rowNum)
            #get columns number  
            self.colNum = self.table.ncols  
            print(self.colNum)
              
            #the current column  
            self.curRowNo = 1  
              
        def next(self):  
            r = []  
            while self.hasNext():  
                s = {}  
                col = self.table.row_values(self.curRowNo)  
                i = self.colNum  
                for x in range(i):  
                    s[self.row[x]] = col[x]  
                r.append(s)  
                self.curRowNo += 1  
            print(r)
            return r         
          
        def hasNext(self):  
            if self.rowNum == 0 or self.rowNum <= self.curRowNo :  
                return False  
            else:  
                return True  
        # if __name__ == '__main__':
            # readExcelDataByName('TestCase.xlsx', 'TestCase')
    # ExcelUtil=ExcelUtil("TestCase.xlsx", "TestCase")
    # ExcelUtil.next()
    
    
      
    excel = ExcelUtil("TestCase.xlsx", "TestCase")
    # excel.next()
     
    @ddt.ddt  
    class DataTest(unittest.TestCase):  
        @classmethod   
        def setUpClass(cls):  
            print('start')  
             
        @classmethod   
        def tearDownClass(cls):  
            print('stop')  
     
        @ddt.data(*excel.next())  
        def testLogin(self, data):  
            print(data['Request URL'])  
            print(data['Request Method'])  
            print(data['Request Data'])  
      
      
    if __name__ == "__main__":  
        suite = unittest.TestLoader().loadTestsFromTestCase(DataTest)  
        unittest.TextTestRunner(verbosity=2).run(suite)
    目前还在学习中,希望会对大家有所帮助,觉得不错,就点赞支持一下。 另外,转载时请附带链接。谢谢!
  • 相关阅读:
    使用HandyJSON导致的内存泄漏问题相关解决方法
    iOS开发中获取视图在屏幕上显示的位置
    颜色框架Hue使用方法
    网络库Alamofire使用方法
    iOS开发中使用文字图标iconfont
    UISearchBar的扩展使用
    cocoapods导入第三方库提示RPC failed curl 18 transfer
    APP在模拟器崩溃,提示__gcd_queue_item_enqueue_hook_block_invoke
    APP崩溃提示:This application is modifying the autolayout engine from a background thread after the engine was accessed from the main thread. This can lead to engine corruption and weird crashes.
    crm
  • 原文地址:https://www.cnblogs.com/dangkai/p/9178010.html
Copyright © 2011-2022 走看看