`
tengzejun508
  • 浏览: 27277 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

QTP简单框架之EXCEL报表

    博客分类:
  • QTP
阅读更多
Dim oReporterManager
Set oReporterManager = New ReportManager
Call oReporterManager.StartReport("人人围登录1","C:\Report.xls","测试下而已1","sirrah1")
Call oReporterManager.Report("Pass","Test_Case1","成功","成功","步骤详细1")
Call oReporterManager.StartReport("人人围登录2","C:\Report.xls","测试下而已2","sirrah2")
Call oReporterManager.Report("Fail","Test_Case2","成功","成功","步骤详细2")
    
Class ReportManager
    
Dim Str_CaseName  '测试用例名
Dim Str_FileName  '报告存放地址
Dim Str_CaseDesc  '测试用例描述 
Dim Str_Author    '测试用例编写者
Dim bln_Init      '是否初始化
        
'-------------------------------------------------------------------------------
'
'  函数名称: StartReport
'  函数说明: 开启生成测试报告机制
'  参数说明: 
'            (1).sReportType:报告类型(目前仅支持Excel、Html)
'            (2).sCaseName:测试用例名称
'            (3).sFileName:报告输出的路径(文件在磁盘绝对路径位置)
'            (4).sCaseDesc:测试用例描述、说明
'            (5).sAuthor:测试用例设计者名称
'  返回结果: 无 
'  调用方法:
'            StartReport("Html","TestLogin","C:\Report.html","TestLoginDesc","Sirrah")
'
'-------------------------------------------------------------------------------
    
Function StartReport(sCaseName,sFileName,sCaseDesc,sAuthor)
    '检查sFileName文件格式是否是合法的Excle文件格式
    If Not CheckFile(sFileName) Then
        ReportEvent "","","对不起!您输入的文件:"&sFileName&"是不合法的Excle文件格式!"
    End If
    '判断当前格式的报告是否存在,如果存在则删除该文件   
    If IsFileExist(sFileName)And Not bln_Init Then
        DeleteFile(sFileName)
        CreateReport(sFileName) 
        bln_Init = True
    End If
    Str_CaseName = sCaseName
    Str_FileName = sFileName
    Str_CaseDesc = sCaseDesc
    Str_Author = sAuthor
End Function
    
Function CreateReport(Str_FileName)
'    Set fso = CreateObject("scripting.FileSystemObject") 
'   Str_Folder=Left(Str_FileName,InStrRev(Str_FileName,"\")-1)
'    If Not fso.FolderExists(Str_Folder) Then
'      FSO.CreateFolder(Str_Folder)
'   End If 
'   Set fso = Nothing
    Set oExcel=CreateObject("Excel.Application")
    oExcel.Visible=false
    oExcel.DisplayAlerts = False
    oExcel.Workbooks.Add 
    '设置第一个sheet样式
    Set oSheet = oExcel.Sheets.Item(1) 
    oExcel.Sheets.Item(1).Select
    With oSheet
            .Name = "测试概要" '将第一个sheet命名为"测试概要"
                
            .Range("B1").Value = "测试结果" '设置顶部第一行标题
            .Range("B1:E1").Merge   'B1到C1合并居中
            .Range("B1:E1").Interior.ColorIndex = 21 '单元格背景颜色
            .Range("B1:E1").HorizontalAlignment = 3 '对齐方式:居中
            .Range("B1:E1").Font.ColorIndex = 19 '设置字体的颜色
            .Range("B1:E1").Font.Bold = True '设置字体加粗
            .Range("B1:E1").Font.Size = 16   '设置字体的大小
                 
            '设置测试概要信息内容
            .Range("B3").Value = "测试日期: "
            .Range("D3").Value = "测试开始时间: "
            .Range("B4").Value = "测试用时: "
            .Range("D4").Value = "测试结束时间: "
            .Range("B5").Value = "总用例数:"
            .Range("D5").Value = "总步骤数:"
            .Range("B6").Value = "成功用例数:"
            .Range("D6").Value = "失败用例数:"
    
            .Range("C3").Value = Date()
            .Range("E3").Value = Time() 
            .Range("E3").NumberFormat = "hh:mm:ss" '设置时间的格式为24小时制
            .Range("E4").Value = Time()
            .Range("E4").NumberFormat = "hh:mm:ss"'设置时间的格式为24小时制
            .Range("C4").Value = "=RC[2]-R[-1]C[2]" '结束时间减去开始时间
            .Range("C4").NumberFormat = "hh:mm:ss"
            .Range("C5").Value = "0"
            .Range("E5").Value = "0"
            .Range("C6").Value = "0"
            .Range("E6").Value = "0"
                
            '设置单元格四周边框
            .Range("B3:E6").Borders(1).LineStyle = 1 
            .Range("B3:E6").Borders(2).LineStyle = 1
            .Range("B3:E6").Borders(3).LineStyle = 1
            .Range("B3:E6").Borders(4).LineStyle = 1
                
            '设置背景色和字体样式
            .Range("B3:E6").Font.Bold = True
            .Range("B3:E6").Font.Size = 10
    
            .Range("B3:B6").Interior.ColorIndex = 50
            .Range("B3:B6").Font.ColorIndex = 19
            .Range("D3:D6").Interior.ColorIndex = 50
            .Range("D3:D6").Font.ColorIndex = 19
    
            .Range("C3:C6").Interior.ColorIndex = 15
            .Range("C3:C6").HorizontalAlignment = 3
            .Range("C3:C5").Font.ColorIndex = 25
            .Range("C6:C6").Font.ColorIndex = 10
                
            .Range("E3:E6").Interior.ColorIndex = 15
            .Range("E3:E6").HorizontalAlignment = 3
            .Range("E3:E5").Font.ColorIndex = 25
            .Range("E6:E6").Font.ColorIndex = 3
                
             '设置测试用例区域标题            
            .Range("B10").Value = "用例名"
            .Range("C10").Value = "测试结果"
            .Range("D10").Value = "用例步骤数"
            .Range("E10").Value = "用例描述"
            .Range("F10").Value = "设计者"
            .Range("G11").Value = "*点击用例名查看详细的测试结果"
                
            '设置背景色和字体样式
            .Range("B10:F10").Interior.ColorIndex = 21
            .Range("B10:F10").HorizontalAlignment = 3
            .Range("B10:F10").Font.ColorIndex = 19
            .Range("B10:F10").Font.Bold = True
            .Range("B10:F10").Font.Size = 14
        
            '设置单元格四周边框
            .Range("B10:F10").Borders(1).LineStyle = 1 
            .Range("B10:F10").Borders(2).LineStyle = 1
            .Range("B10:F10").Borders(3).LineStyle = 1
            .Range("B10:F10").Borders(4).LineStyle = 1
        
            '设置单元格自动适应大小
            .Columns("B:F").Autofit
            .Range("B11").Select
            oExcel.ActiveWindow.FreezePanes = True
        End With
    
        '设置第二个sheet样式
        Set oSheet = oExcel.Sheets.Item(2)
        oExcel.Sheets.Item(2).Select
        With oSheet
            .Name = "测试结果"  ''将第二个sheet命名为"测试结果"
            '标题栏每列的宽度
            .Columns("B:B").ColumnWidth = 20
            .Columns("C:C").ColumnWidth = 15
            .Columns("D:D").ColumnWidth = 25
            .Columns("E:E").ColumnWidth = 25
            .Columns("F:F").ColumnWidth = 25
            .Columns("B:F").HorizontalAlignment = 2 '对齐方式左对齐
            .Columns("B:F").WrapText = True
                        
            '设置标题栏名称
            .Range("B1").Value = "步骤名"
            .Range("C1").Value = "测试结果"
            .Range("D1").Value = "预期结果"
            .Range("E1").Value = "实际结果"
            .Range("F1").Value = "结果描述"
                
            '设置标题栏字体样式
            .Range("B1:F1").Interior.ColorIndex = 21
            .Range("B1:F1").Font.ColorIndex = 19
            .Range("B1:F1").Font.Bold = True
            .Range("B1:F1").Font.Size = 16
        
            '设置单元格四周边框
            .Range("B1:F1").Borders(1).LineStyle = 1 
            .Range("B1:F1").Borders(2).LineStyle = 1
            .Range("B1:F1").Borders(3).LineStyle = 1
            .Range("B1:F1").Borders(4).LineStyle = 1
            .Range("B2").Select
            oExcel.ActiveWindow.FreezePanes = True
        End With
        '删除多余的第三个sheet
        Set oSheet = oExcel.Sheets.Item(3) 
        oExcel.Sheets.Item(3).delete 
        oExcel.Sheets.Item(1).Select
        oExcel.ActiveWorkbook.saveas Str_FileName
        oExcel.Quit
    
        Set oSheet=Nothing
        Set oExcel=Nothing
    
    End Function
    
    
'-------------------------------------------------------------------------------
'
'  函数名称: Report
'  函数说明: 向报告中输入每个检查点结果
'  参数说明: 
'            (1).sStatus:报告类型(目前仅支持Excel、Html)
'            (2).sStepName:测试用例名称
'            (3).sExpected:报告输出的路径(文件在磁盘绝对路径位置)
'            (4).sActual:测试用例描述、说明
'            (5).sDetails:测试用例设计者名称
'  返回结果: 无 
'  调用方法:
'            Report("Pass","Test_Case1","成功","成功","步骤详细")
'
'-------------------------------------------------------------------------------
Function Report(sStatus,sStepName,sExpected,sActual,sDetails)
        Dim oWorkBook 
        Dim oSheet
        Dim Row, TCRow, NewTC
        Set oExcel=CreateObject("Excel.Application")
        Set oWorkBook = oExcel.Workbooks.Open (Str_FileName)
    
        Set oSheet = oExcel.Sheets("测试概要")
        oExcel.Sheets("测试概要").Select
    
        With oSheet
            Row = .Range("E5").Value + 2*.Range("C5").Value + 2 '获取当前测试步骤行
            TCRow = .Range("C5").Value + 11
            NewTC = False
            'Check if it is a new Tetstcase
            If oSheet.Cells(TCRow - 1, 2).Value <> Str_CaseName Then
                .Cells(TCRow, 2).Value = Str_CaseName
                oExcel.ActiveSheet.Hyperlinks.Add oSheet.Cells(TCRow, 2), "", "测试结果!B" & Row+1, Str_CaseName
                .Cells(TCRow, 3).Value = sStatus
                .Cells(TCRow, 5).Value = Str_CaseDesc
                .Cells(TCRow, 6).Value = Str_Author
                Select Case sStatus
                    Case "Fail"
                        .Range("E6").Value=.Range("E6").Value+1
                        .Range("C" & TCRow).Font.ColorIndex = 3
                    Case "Pass"
                        .Range("C6").Value=.Range("C6").Value+1
                        .Range("C" & TCRow).Font.ColorIndex = 10
                End Select
    
                .Cells(TCRow, 4).Value = 1
                NewTC = True
                .Range("C5").Value = .Range("C5").Value + 1
                'Set the Borders for the Result Header
                .Range("B" & TCRow & ":F" & TCRow).Borders(1).LineStyle = 1 
                .Range("B" & TCRow & ":F" & TCRow).Borders(2).LineStyle = 1
                .Range("B" & TCRow & ":F" & TCRow).Borders(3).LineStyle = 1
                .Range("B" & TCRow & ":F" & TCRow).Borders(4).LineStyle = 1
                'Set color and Fonts for the Header
                .Range("B" & TCRow & ":F" & TCRow).Interior.ColorIndex = 19
                .Range("B" & TCRow & ":D" & TCRow).HorizontalAlignment = 3
                .Range("F" & TCRow & ":F" & TCRow).HorizontalAlignment = 3
                .Range("B" & TCRow).Font.ColorIndex = 53
                .Range("B" & TCRow & ":F" & TCRow).Font.Bold = True
                .Range("B" & TCRow & ":F" & TCRow).Font.Size=10
                .Range("B" & TCRow & ":F" & TCRow).WrapText = True
                .Range("E" & TCRow).Font.ColorIndex=23
            Else
                .Range("D" & TCRow-1).Value = .Range("D" & TCRow-1).Value + 1
            End If
            If (Not NewTC) And .Cells(TCRow-1, 3).Value="Pass" And(sStatus = "Fail") Then
                .Range("E6").Value=.Range("E6").Value+1
                .Range("C6").Value=.Range("C6").Value-1
                .Cells(TCRow-1, 3).Value = "Fail"
                .Range("C" & TCRow-1).Font.ColorIndex = 3       
            End If
            .Range("E5").Value = .Range("E5").Value + 1
            'Update the End Time
            .Range("E4").Value = Time()
            'Set Column width
            .Columns("B:E").Autofit
        End With
        
        'Select the Result Sheet
        Set oSheet = oExcel.Sheets("测试结果")
        oExcel.Sheets("测试结果").Select
        With oSheet
            'Enter the Result
            If NewTC Then
                .Range("B" & Row & ":F" & Row).Interior.ColorIndex = 2
                .Range("B" & Row & ":F" & Row).Merge
                 Row = Row + 1
                .Range("B" & Row & ":F" & Row).Merge        
                .Range("B" & Row).Value ="测试用例名:"&VbTab&Str_CaseName
                'Set color and Fonts for the Header
                .Range("B" & Row & ":F" & Row).Interior.ColorIndex = 47
                .Range("B" & Row & ":F" & Row).Font.ColorIndex = 19
                .Range("B" & Row & ":F" & Row).Font.Bold = True
                .Range("B" & Row & ":F" & Row).Font.Size = 14
                 Row = Row + 1
            End If
            .Range("B" & Row).Value = sStepName
            .Range("C" & Row).Value = sStatus
            .Range("C" & Row).Font.Bold = True                
                
            Select Case sStatus
                Case "Pass"
                    .Range("C" & Row).Font.ColorIndex = 10
                Case "Fail"
                    .Range("B" & Row & ":F" & Row).Font.ColorIndex = 3
            End Select
    
            .Range("C" & Row).Font.Bold = True
            .Range("D" & Row).Value = sExpected
            .Range("E" & Row).Value = sActual
            .Range("F" & Row).Value = sDetails
        
            'Set the Borders
            .Range("B" & Row & ":F" & Row).Borders(1).LineStyle = 1
            .Range("B" & Row & ":F" & Row).Borders(2).LineStyle = 1
            .Range("B" & Row & ":F" & Row).Borders(3).LineStyle = 1
            .Range("B" & Row & ":F" & Row).Borders(4).LineStyle = 1
            .Range("B" & Row & ":F" & Row).VerticalAlignment = -4160
            .Range("B" & Row & ":F" & Row).Font.Size = 10
        
        End With
        oExcel.Sheets("测试概要").Select
        oWorkBook.Save
        oExcel.Quit
        Set oSheet=Nothing
        Set oExcel=Nothing
        Set oWorkBook = Nothing
            
End Function
    
'-------------------------------------------------------------------------------
'
'  函数名称: CheckFile
'  函数说明: 检查文件格式是否符合报告支持的格式
'  参数说明: 
'            (1).sFileName:报告类型(目前仅支持Excel、Html)
'  返回结果: boolean,是否是合法的文件格式 
'  调用方法:
'            CheckFile("c:\Test.Html")
'
'-------------------------------------------------------------------------------
Function CheckFile(sFileName)
    'sSuffix 获取文件的后缀名
    sSuffix=Right(sFileName,Len(sFileName)-InStrRev(sFileName,"."))
    If LCase(sSuffix) = "xls" Or LCase(sSuffix) = "xlsx"  Then
        CheckFile = True
    End If  
End Function
    
'-------------------------------------------------------------------------------
'
'  函数名称: ReportEvent
'  函数说明: 输出报告信息
'  参数说明: 
'            (1).bln_Status:报告类型(目前仅支持Excel、Html)
'            (2).obj_Type:报告类型(目前仅支持Excel、Html)
'            (3).str_Text:报告类型(目前仅支持Excel、Html)
'  返回结果: 无
'  调用方法:
'            ReportEvent "","","对不起!您输入的文件:"&sFileName&"是不合法的Excle文件格式!"
'
'-------------------------------------------------------------------------------
Function ReportEvent(bln_Status,obj_Type,str_Text)
    'Reporter.Filter = rtEnableAll
    'Reporter.ReportEvent status, objtype, text
    'DetailLogPrint objtype&":"&VBTab&text&"【"& status &"】"
    'Reporter.Filter = rfDisableAll
    'MsgBox str_Text
End Function
    
'-------------------------------------------------------------------------------
'
'  函数名称: IsFileExist
'  函数说明: 检查文件是否存在
'  参数说明: 
'            (1).sFile:文件路径
'  返回结果: boolean,文件夹是否存在 
'  调用方法:
'            CheckFile("c:\Test.Html")
'
'-------------------------------------------------------------------------------
Function IsFileExist(sFile)
    Set fso = CreateObject("scripting.FileSystemObject") 
    IsFileExist =  fso.FileExists(sFile)
End Function
    
'-------------------------------------------------------------------------------
'
'  函数名称: DeleteFile
'  函数说明: 删除文件
'  参数说明: 
'            (1).sFile:文件路径
'  返回结果: 无 
'  调用方法:
'            DeleteFile("c:\Test.Html")
'
'-------------------------------------------------------------------------------
Function DeleteFile(sFile)
    Set fso = CreateObject("scripting.FileSystemObject") 
    fso.DeleteFile(sFile)
End Function
    
End Class
分享到:
评论

相关推荐

    qtp制造EXCEL报表代码

    【QTP制造EXCEL报表代码】是自动化测试工具QuickTest Professional(现在被称为UFT, Unified Functional Testing)中使用VBScript语言来创建和编辑Excel报告的一种技术。VBScript是Visual Basic Script Edition,是...

    QTP实现两个Excel表格数据对比

    QTP实现两个Excel表格数据对比代码,Function导入,直接调用该Function就可实现数据对比

    qtp代码框架------一位高手的杰作

    ### QTP代码框架详解——基于Excel的参数化与验证机制 #### 一、概述 本文将详细介绍一个由高手设计的QTP(Quick Test Professional)代码框架。该框架的核心功能是利用Excel文件作为测试数据源,实现自动化的参数...

    轻量级QTP框架

    在提供的"Demo"文件中,我们可能找到了一个简单的示例或者模板,用于展示如何构建这样的轻量级QTP框架。这个示例可能包含了上述提到的一些关键组成部分,例如对象库、数据驱动的实现、模块化代码等,可以帮助初学者...

    QTP实现自动读取excel

    ### QTP实现自动读取Excel的关键知识点 #### 一、QTP简介 QTP(Quick Test Professional)是一款功能强大的自动化测试工具,它主要用于自动化回归测试和功能测试,能够支持多种类型的软件应用程序,如Web应用、桌面...

    用QTP实现EXCEL数据比对

    用QTP实现EXCEL数据比对

    QTP测试框架(含源码)

    【QTP测试框架(含源码)】是一个用于自动化测试的专业工具,由一位经验丰富的高手编写,旨在帮助用户根据自己的需求进行定制。QTP,全称为QuickTest Professional,现已被HP Unified Functional Testing(UFT)取代...

    QTP框架,描述自动化框架的搭建

    【QTP框架——自动化测试框架搭建详解】 自动化测试框架是软件测试领域中不可或缺的一部分,它能够提高测试效率,降低重复工作,确保测试的稳定性和可维护性。在本篇文章中,我们将深入探讨QTP(QuickTest ...

    QTP关键字框架分析

    关键字框架是在数据驱动的基础上,把测试脚本提取成关键字,保存到数据库或者Excel中,然后框架从数据文件中读取出关键字信息,qtp来执行的一种框架,本文介绍该框架,并对关键文件进行分析介绍。

    轻量级qtp框架

    【轻量级QTP框架】是一种自动化测试工具QuickTest Professional(QTP)的简化和优化实现,旨在提高测试效率和可维护性。QTP,现已被更名为UFT(Unified Functional Testing),是由HP公司开发的一款功能强大的自动化...

    QTP三种自动化测试框架

    本篇将详细介绍UFT(QTP)中的三种自动化测试框架。** ### 1. 纯VBS脚本框架 **纯VBS脚本框架是最基础的自动化测试框架,它完全依赖于Visual Basic Script(VBS)编写测试脚本。** VBS是Microsoft开发的一种弱类型...

    QTP+自动化测试框架

    【QTP+自动化测试框架】是一种利用QuickTest Professional(QTP)进行自动化测试的方法,并结合VBScript进行二次开发,以提升测试效率和简洁性。QTP,现已被更名为UFT(Unified Functional Testing),是一款功能...

    QTP自动化框架结构

    对整套QTP自动化都有详细的步骤描述以及测试层次,是一份不可多得的好资料

    QTP中文手册+自动测试框架+saffron

    《QTP学习历程--从工具使用到框架思想.doc》可能是作者分享的个人学习心得,从基础的工具使用逐步过渡到搭建和运用测试框架的高级主题。 Saffron是另一种与自动化测试相关的技术,它可能是一个特定的测试工具或者...

    qtp读取Excel

    QTP提供了丰富的功能,其中包括与外部数据源交互的能力,如读取和写入Excel文件。Excel由于其易用性和灵活性,常被用来存储测试数据,如测试用例、预期结果等。本知识点将深入探讨如何利用QTP来读取和写入Excel文件...

    QTP自动化框架开发(实用框架)

    《QTP自动化框架开发——构建高效实用框架》 在当今快速发展的信息技术领域,软件测试自动化已经成为提高效率和质量的关键手段。QuickTest Professional (QTP) 是一款由HP(现为Micro Focus)推出的自动化测试工具...

    1 自动化测试的实践-应用QTP测试框架.ppt

    静态对象的识别相对简单,而动态对象(如由JavaScript生成的对象)的识别则更为复杂,可能需要利用QTP的Smart Identification或对象 spy 功能来适应网页的动态变化。 总的来说,QTP测试框架的应用涉及到测试策略...

    轻量级自动化测试框架(QTP)

    总结来说,QTP的轻量级自动化测试框架强调的是简单性和实用性,借助Excel的集成,实现了测试数据的灵活管理和测试脚本的高效执行。这使得测试人员能够更专注于测试逻辑本身,而不是被复杂的框架设计所困扰。在实际...

Global site tag (gtag.js) - Google Analytics