51Testing软件测试论坛

标题: QTP:EXCEL报告输出格式,已经上传源码文件 [打印本页]

作者: 小孩    时间: 2008-11-23 00:41
标题: QTP:EXCEL报告输出格式,已经上传源码文件
这个报告输出是根据网上的Reporter9框架修改出来得,简化了一些,我个人觉得实用性比较高一点,最近看到论坛里面很多人问这个问题,希望能帮到大家,
很多朋友复制论坛里面的代码来时使用碰到了问题,现在附上 源码文件,收费的 哈哈!只是为了大家多给论坛出点力
谢绝匆匆过客 只为会员服务
'************************************************************************************************
'******************XXXXXXXXXxXXXXX有限公司--XXXXX系统自动化脚本******************************
'************************************************************************************************
'****************       脚本名称: 报告模块                                   ********************
'****************       脚本版本: 1.0                                        ********************
'****************       脚本描述: 测试报告结果输出                 ********************
'****************       脚本作者: 小孩 /51TESTING                          ********************
'****************       编写时间: 2008-11-11                                 ********************
'****************       脚本修改:                                            ********************
'****************       修改时间:                                            ********************
'****************       修改备注:                                            ********************
'************************************************************************************************
'************************************************************************************************

'参数: ReportExcelFile 报告输出的路径
Public ReportExcelFile
ReportExcelFile = Environment ("TestDir")& "\" & " 测试结果" & Date & "-"& Hour(Now) & Minute(Now)& Second(Now) & ".xls"

'描述:GetIP    捕获运行脚本的电脑IP
Public Function GetIP
    ComputerName="."
    Dim objWMIService,colItems,objItem,objAddress
    Set objWMIService = GetObject("winmgmts:\\" & ComputerName & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
    For Each objItem in colItems
        For Each objAddress in objItem.IPAddress
            If objAddress <> "" then
                GetIP = objAddress
                Exit Function
            End If
        Next
    Next
End Function

'描述:Report       报告函数
'参数: sStatus      报告的状态分别为FAIL、PASS和waring
'参数: sDetails     注释,用来形容测试内容
Public Function Report(sStatus,sDetails)
'定义变量
Dim fso
Dim oExcel
Dim ExcelFile
Dim TestcaseName
Dim objWorkBook
Dim objSheet
Dim NewTC
Dim Status


Set fso = CreateObject("scripting.FileSystemObject")
Set oExcel = CreateObject("Excel.Application")

Status=UCase(sStatus)
oExcel.Visible = false 'True  
   


'设置Excel报告样式
If  Not fso.FileExists(ReportExcelFile)Then
  oExcel.Workbooks.Add
  
  '获取工作簿的第一个Sheet页
  Set objSheet = oExcel.Sheets.Item(1)
  oExcel.Sheets.Item(1).Select
  
  With objSheet
   .Name = "测试结果"
   '设置列宽
   .Columns("A:A").ColumnWidth = 5
   .Columns("B:B").ColumnWidth = 35
   .Columns("C:C").ColumnWidth = 12.5
   .Columns("D:D").ColumnWidth = 60
   .Columns("A:D").HorizontalAlignment = -4131
   .Columns("A:D").WrapText = True
   '设置显示区域的字体类型和大小
   .Range("A:D").Font.Name = "Arial"
   .Range("A:D").Font.Size = 10
   
   '设置文件头格式
   .Range("B1").Value = "测试结果"
   .Range("B1:C1").Merge
    '设置文件头格式字体和颜色
   .Range("B1:C1").Interior.ColorIndex = 53
   .Range("B1:C1").Font.ColorIndex = 19
   .Range("B1:C1").Font.Bold = True
   
   '设置执行的日期和时间
   .Range("B3").Value = "测试日期:"
   .Range("B4").Value = "执行时间:"
   .Range("B5").Value = "结束时间:"
   .Range("B6").Value = "执行时长: "   
   .Range("C3").Value = Date
   .Range("C4").Value = Time
   .Range("C5").Value = Time
   .Range("C6").Value = "=R[-1]C-R[-2]C"
   .Range("C6").NumberFormat = "[h]:mm:ss;@"
   
   '设置日期和时间cell的边界
   .Range("C3:C8").HorizontalAlignment = 4 '右边对齐
   .Range("C3:C8").Font.Bold = True
   .Range("C3:C8").Font.ColorIndex = 7
   .Range("B3:C8").Borders(1).LineStyle = 1
   .Range("B3:C8").Borders(2).LineStyle = 1
   .Range("B3:C8").Borders(3).LineStyle = 1
   .Range("B3:C8").Borders(4).LineStyle = 1
   
   '设置日期和时间Cell的样式
   .Range("B3:C8").Interior.ColorIndex = 40
   .Range("B3:C8").Font.ColorIndex = 12
   .Range("C3:C8").Font.ColorIndex = 7
   .Range("B3:A8").Font.Bold = True
   .Range("B7").Value = "执行总数:"
   .Range("C7").Value = "0"
   .Range("B8").Value = "测试机器:"
   .Range("C8").Value =GetIP()
   .Range("B10").Value = "测试业务"
   .Range("C10").Value = "结果"
   .Range("D10").Value = "注释"
   
   '为Result Summery设置格式
   .Range("B10:D10").Interior.ColorIndex = 53
   .Range("B10:D10").Font.ColorIndex = 19
   .Range("B10:D10").Font.Bold = True
   
   '为Result Summery设置边界
   .Range("B10:D10").Borders(1).LineStyle = 1
   .Range("B10:D10").Borders(2).LineStyle = 1
   .Range("B10:D10").Borders(3).LineStyle = 1
   .Range("B10:D10").Borders(4).LineStyle = 1
   .Range("B10:D10").HorizontalAlignment = -4131
   .Range("C11:C1000").HorizontalAlignment = -4131
   .Columns("B:D").Select
   ' .Columns("B:D").Autofit
   .Range("B11").Select  
  End With
  oExcel.ActiveWindow.FreezePanes = True
  oExcel.ActiveWorkbook.SaveAs ReportExcelFile
  oExcel.Quit
  Set objSheet = Nothing
End If

TestcaseName = Environment("TCase")
Set objWorkBook = oExcel.Workbooks.Open(ReportExcelFile)
Set objSheet = oExcel.Sheets("测试结果")

With objSheet
'设置行数和是否NewTc标识
  Environment.Value("Row")  = .Range("C7").Value + 11
  NewTC = False

  If TestcaseName <> objSheet.Cells(Environment("Row")-1,2).value Then
      .Cells(Environment("Row"),2).value = TestcaseName
      .Cells(Environment("Row"), 3).Value = Status
      .Cells(Environment("Row"), 4).value = sDetails
  
   Select Case Status
       Case "FAIL"
            .Range("C" & Environment("Row")).Font.ColorIndex = 3
       Case "PASS"
            .Range("C" & Environment("Row")).Font.ColorIndex = 50
                            Case "WARNING"
            .Range("C" & Environment("Row")).Font.ColorIndex = 5
   End Select

  NewTC = True
  .Range("C7").Value = .Range("C7").Value + 1
  '设置边界
  .Range("B" & Environment("Row") & ":D" & Environment("Row")).Borders(1).LineStyle = 1
  .Range("B" & Environment("Row") & ":D" & Environment("Row")).Borders(2).LineStyle = 1
  .Range("B" & Environment("Row") & ":D" & Environment("Row")).Borders(3).LineStyle = 1
  .Range("B" & Environment("Row") & ":D" & Environment("Row")).Borders(4).LineStyle = 1
  '设置字体和颜色
  .Range("B" & Environment("Row") & ":D" & Environment("Row")).Interior.ColorIndex = 19
  .Range("B" & Environment("Row")).Font.ColorIndex = 53
  .Range("D" & Environment("Row")).Font.ColorIndex = 41
  .Range("B" & Environment("Row") & ":D" & Environment("Row")).Font.Bold = True


  End If

  If (Not NewTC) And (Status = "FAIL") Then
   .Cells(Environment("Row"), 3).Value = "Fail"
   .Range("C" & Environment("Row")).Font.ColorIndex = 3
  end If
  
  '更新结束时间
  .Range("C5").Value = Time
  
  .Columns("B:D").Select
  '.Columns("B:D").Autofit
End With
oExcel.ActiveWindow.FreezePanes = True

'保存结果
objWorkBook.Save
oExcel.Quit
Set objSheet = Nothing
Set objWorkBook = Nothing
Set oExcel = Nothing
Set fso = Nothing
End Function

[ 本帖最后由 小孩 于 2008-11-26 13:05 编辑 ]

[ 本帖最后由 walker1020 于 2009-8-16 21:45 编辑 ]
作者: 没有蛀牙    时间: 2008-11-23 10:13

怎么有几个笑脸在里面阿
作者: 小孩    时间: 2008-11-23 11:23
   论坛自动生成的 你可以到个人空间看
作者: skykklove    时间: 2008-11-23 11:49
培训中 还没学到QTP  不过 很快了
作者: shwonder    时间: 2008-11-23 17:37
好东西,支持!
作者: blueeagle9999    时间: 2008-11-23 21:33
刚好,最近在弄框架,有的参考了!
作者: gavin.chen    时间: 2008-11-23 22:16
支持分享和原创
作者: fly    时间: 2008-11-24 11:33
If TestcaseName <> objSheet.Cells(Environment("Row")-1,2).value Then
这个怎么理解
作者: 小孩    时间: 2008-11-24 13:16
If TestcaseName <> objSheet.Cells(Environment("Row")-1,2).value Then
作者: kakamissyou    时间: 2008-11-24 23:28
标题: 呵呵呵。。楼主辛苦!
呵呵呵。。楼主辛苦!
作者: arivn    时间: 2008-11-25 08:21
楼主你好,我想问一下这个生成的EXCEL报告保存在那里了
作者: j44jj44j    时间: 2008-11-25 09:14
笑脸是表情符号吧,:_D

作者: 小孩    时间: 2008-11-25 10:33
ReportExcelFile = Environment ("TestDir")& "\" & " 测试结果" & Date & "-"& Hour(Now) & Minute(Now)& Second(Now) & ".xls"
这个是路径 你可以修改成你想放得路径
作者: thloong    时间: 2008-11-25 10:41
顶下,好东西
作者: coralsong_1982    时间: 2008-11-25 14:18
这个东东不错,呵呵,谢谢楼主
作者: arivn    时间: 2008-11-25 19:45
楼主帮我看一下下面这段代码:

Public ReportExcelFile
ReportExcelFile = Environment ("TestDir")& "\" & " 测试结果" & Date & "-"& Hour(Now) & Minute(Now)& Second(Now) & ".xls"

Dim fso
Dim oExcel
Dim ExcelFile
Dim TestcaseName
Dim objWorkBook
Dim objSheet
Dim NewTC
Dim Status


set fso = CreateObject("scrīpting.FileSystemObject")
Set oExcel = CreateObject("Excel.Application")

Status=UCase(sStatus)
oExcel.Visible = false 'True  
   

'设置Excel报告样式

  
  '获取工作簿的第一个Sheet页
  Set objSheet = oExcel.Sheets.Item(1)

  oExcel.Sheets.Item(1).Select
  
  With objSheet
   .Name = "测试结果"
   '设置列宽
   .Columns("A:A").ColumnWidth = 5
   .Columns("B:B").ColumnWidth = 35
   .Columns("C:C").ColumnWidth = 12.5
   .Columns("D").ColumnWidth = 60
   .Columns("A").HorizontalAlignment = -4131
   .Columns("A").WrapText = True
   '设置显示区域的字体类型和大小
   .Range("A").Font.Name = "Arial"
   .Range("A").Font.Size = 10
   
   '设置文件头格式
   .Range("B1").Value = "测试结果"
   .Range("B1:C1").Merge
    '设置文件头格式字体和颜色
   .Range("B1:C1").Interior.ColorIndex = 53
   .Range("B1:C1").Font.ColorIndex = 19
   .Range("B1:C1").Font.Bold = True
   
   '设置执行的日期和时间
   .Range("B3").Value = "测试日期:"
   .Range("B4").Value = "执行时间:"
   .Range("B5").Value = "结束时间:"
   .Range("B6").Value = "执行时长: "   
   .Range("C3").Value = Date
   .Range("C4").Value = Time
   .Range("C5").Value = Time
   .Range("C6").Value = "=R[-1]C-R[-2]C"
   .Range("C6").NumberFormat = "[h]:mm:ss;@"
   
   '设置日期和时间cell的边界
   .Range("C3:C8").HorizontalAlignment = 4 '右边对齐
   .Range("C3:C8").Font.Bold = True
   .Range("C3:C8").Font.ColorIndex = 7
   .Range("B3:C8").Borders(1).LineStyle = 1
   .Range("B3:C8").Borders(2).LineStyle = 1
   .Range("B3:C8").Borders(3).LineStyle = 1
   .Range("B3:C8").Borders(4).LineStyle = 1
   
   '设置日期和时间Cell的样式
   .Range("B3:C8").Interior.ColorIndex = 40
   .Range("B3:C8").Font.ColorIndex = 12
   .Range("C3:C8").Font.ColorIndex = 7
   .Range("B3:A8").Font.Bold = True
   .Range("B7").Value = "执行总数:"
   .Range("C7").Value = "0"
   .Range("B8").Value = "测试机器:"
  ' .Range("C8").Value =GetIP()
   .Range("B10").Value = "测试业务"
   .Range("C10").Value = "结果"
   .Range("D10").Value = "注释"
   
   '为Result Summery设置格式
   .Range("B1010").Interior.ColorIndex = 53
   .Range("B1010").Font.ColorIndex = 19
   .Range("B1010").Font.Bold = True
   
   '为Result Summery设置边界
   .Range("B1010").Borders(1).LineStyle = 1
   .Range("B1010").Borders(2).LineStyle = 1
   .Range("B10:D10").Borders(3).LineStyle = 1
   .Range("B10:D10").Borders(4).LineStyle = 1
   .Range("B10:D10").HorizontalAlignment = -4131
   .Range("C11:C1000").HorizontalAlignment = -4131
   .Columns("B:D").Select
   .Columns("B:D").Autofit
   .Range("B11").Select  
  End With
就是在你那段代码的基础上改的,运行报如下图的错
作者: arivn    时间: 2008-11-25 19:49
但我去掉这行代码(set fso = CreateObject("scrīpting.FileSystemObject"))还是会报错,如下图

源代码见附件
作者: 小孩    时间: 2008-11-25 20:52
  因为 代码发上 论坛后,复制下来是不能直接运行的!要修改才行!
因为很多字符都变了!
作者: arivn    时间: 2008-11-26 08:31
那个附件excel.doc里面有代码

楼主帮我看一下
作者: xumeiwen    时间: 2008-11-26 14:00
谢谢楼主的分享。
作者: carolinebi    时间: 2008-11-26 14:37
谢谢

作者: yuandjing    时间: 2008-11-26 14:50
已经引用,呵呵
谢谢
作者: j44jj44j    时间: 2008-11-26 20:26
不要沉了!!!!
作者: ym_wei    时间: 2008-11-27 10:03
谢了
作者: zitong    时间: 2008-11-27 16:20
  花了10块钱,下载出错!
作者: zitong    时间: 2008-11-27 16:30
楼主发一份到我的邮箱晒,谢谢阿,tong_gq@163.com
作者: wistaria    时间: 2008-11-27 16:40
运行出错了!请问该如何使用!
作者: 小孩    时间: 2008-11-28 10:35
使用 了QTP环境变量,只能在QTP下面使用 ,你可以用自定义的变量来取代它
作者: yuandjing    时间: 2008-11-28 12:29
可以这样调用:
Environment("TCase") = "Wally's Testing"
Call Report("PASS", "add some notes")
作者: 小孩    时间: 2008-11-28 13:10
完成可以
作者: sanlo    时间: 2008-12-1 16:11
谢谢楼主的分享。
作者: fuhongtao    时间: 2008-12-1 17:35
拜读
作者: fuhongtao    时间: 2008-12-1 17:38
为什么付完了积分,还是down不了呢?
作者: bertha2124    时间: 2008-12-1 18:12
刚好可以用耶,
谢谢前辈的分享!
作者: fuhongtao    时间: 2008-12-2 09:08
我的10个积分没了,为什么down不了啊?
作者: whfzy    时间: 2008-12-2 09:15
好东西收藏了,楼主真的是好人哦
作者: 5555    时间: 2008-12-2 09:46
下载学习~
作者: angelia_liu    时间: 2008-12-2 11:14
学习中,不过看起来好像挺难的
作者: wawa133    时间: 2008-12-2 12:05
下载看看.好久没有来这里了.
作者: liangmiao    时间: 2008-12-2 13:25
顶呀
作者: angelia_liu    时间: 2008-12-2 14:56
我运行了,也成功了,但是我不知道这个什么时候用?用来干什么?对工作有很大的帮助吗?
请高人指教
作者: lxclxc12    时间: 2008-12-3 16:39
谢谢楼主的分享。dddd
作者: sanlo    时间: 2008-12-3 21:15
有个问题比较疑惑 不知道是不是我没看懂CODE.
这个EXCEL报告输出是不是调用一次就会生成一个EXCEL?
那假如有多个TC自动跑下来的话不是有多个EXCEL文件, 既然是框架 为什么不把所有跑的结果给合在一起, 这样会更好吧.
作者: lilysun0411    时间: 2008-12-8 17:47
正好在学框架!
作者: jg2002    时间: 2008-12-11 15:00
好东西,支持!
作者: thloong    时间: 2008-12-12 11:13
不错,支持下点击这里给我发消息
作者: trademark    时间: 2008-12-16 17:39
LZ不厚道,原因有两个
其一:让大家花钱来买
其二:没售后服务,至少在线详细注释一下一些重要地方的,然后再讲一下如何使用

所以这钱花的有点不值
作者: asoqa    时间: 2008-12-16 19:02
不错,值得收藏。
作者: yiyireal    时间: 2009-2-17 15:29
我付费了,为啥下不下来呀 楼主给我发一份吧
作者: Tesherlock    时间: 2009-2-20 14:47
收藏了。框架结构,XLS输出,今后用得着!哈哈
作者: ls_721521    时间: 2009-2-20 17:06
...
作者: ls_721521    时间: 2009-2-20 17:48
执行时只能写一个report啊。。如果写多个report不能写入excel里,只是把第一个report结果写里了。
作者: skyhen    时间: 2009-2-21 16:08
谢谢分享,等会试试看!!!!
作者: shengyan    时间: 2009-3-9 11:30
好人啊~~~~~~
作者: shengyan    时间: 2009-3-9 11:39
花了10块大洋.我也想问一下,我要多个脚本的结果都写到这一个report里行不行的哦?
需要售后服务!
作者: fei.ge    时间: 2009-3-9 13:40
Reporter9的框架才是精华,嘿嘿
作者: shengyan    时间: 2009-3-9 13:53
原帖由 fei.ge 于 2009-3-9 13:40 发表
Reporter9的框架才是精华,嘿嘿

请问一下怎么用?
作者: dreamever    时间: 2009-3-9 14:27
这么好的东西,不顶不行,先水一个
作者: fei.ge    时间: 2009-3-9 15:01
标题: 回复 57# 的帖子
Reporter9里支持多种格式的输出报告,excel只是其中一种。

其完全利用类来实现输出报告的形式。在输入上只要StartEngine,其后就可以随时Report生成测试报告。

我最近也在看,呵呵
作者: testlab    时间: 2009-3-9 16:36
没看清楚,多花了10块钱
作者: dreamever    时间: 2009-3-10 10:16
一直很奇怪为什么这样的帖子都会往下沉,顶起来.
作者: ajkone    时间: 2009-3-11 11:32
才贵啊,但还是很值的
作者: lery    时间: 2009-3-13 11:40
标题: 怎么用??
俺也想搞个自定义的QTP报告 但是看不懂你上面的怎么用 呼呼 HELP
作者: virgolong    时间: 2009-4-13 08:35
多谢,很有用的东西啊
好贵5555
作者: jandz0413    时间: 2009-4-14 22:38
世道艰辛啊,上论坛☭个东西还要付费
作者: hotcaoyong    时间: 2009-7-8 11:17
问下楼主编码里面很多O变其他字母了怎么回事 报错很严重
作者: hotcaoyong    时间: 2009-7-8 11:33
我下下来运行的程序 运行
报  Object is disabled

Line (57): ".Columns("A:A").ColumnWidth = 5".
请指教 谢谢
作者: hotcaoyong    时间: 2009-7-8 14:26
上面的发的问题我 已经解决 谢谢楼主的代码
我也看到了 用excel打出的报告  但是我想要在报告里面加入 我截的图片呢
例如测试一个按钮  我截了图 怎么一并加到excel报告里面
作者: fwind1    时间: 2009-7-8 18:35
下来看看
作者: amyx    时间: 2009-7-9 10:40
支持一下
作者: liujinkui    时间: 2009-7-9 13:23
先顶过在看
作者: liujinkui    时间: 2009-7-9 15:45
首先,这里感谢版主
版主是不差钱的,因为原码已经给出。仔细分析,替换几个字符问题就解决了
购买者 一,是有钱;二,是不愿分析代码坐享其成;
作者: lijinshui    时间: 2009-7-10 09:08
很不错哦,虽然我这里用不上,但是班主的热情还是要给予通报表扬的,赫赫
作者: baiyang0606    时间: 2009-11-3 20:07
标题: 回复 1# 的帖子
好贵啊,不过先下下来看看
作者: k4124k    时间: 2010-3-3 13:43
标题: 回复 1# 的帖子
:_D
学习了,谢谢楼主~~
作者: ejcy    时间: 2010-3-3 14:16
好贵啊
作者: ejcy    时间: 2010-3-3 14:16
好贵啊
作者: ejcy    时间: 2010-3-3 14:16
好贵啊
作者: ejcy    时间: 2010-3-3 14:16
好贵啊
作者: ejcy    时间: 2010-3-3 14:16
好贵啊
作者: ejcy    时间: 2010-3-3 14:17
好贵啊
作者: ejcy    时间: 2010-3-3 14:17
好贵啊
作者: yyj0720    时间: 2010-6-9 10:31
标题: 能举例个例子不?
举个简单的例子 应用
作者: ilove51    时间: 2010-6-19 01:48
你被关注了。此文有可能被收录。
作者: wscqb    时间: 2010-12-31 15:02
谢谢楼主
作者: lyscser    时间: 2010-12-31 23:08
用于EXCEL学习是个好东西
作者: vc022737    时间: 2011-1-4 09:49
niubi
作者: auto_tester    时间: 2014-4-22 11:22
学习了!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2