致力于测试团队建设和自动化测试开发,欢迎有兴趣者一起研究讨论

基于QC的缺陷状态分类自动统计邮件功能

上一篇 / 下一篇  2009-04-15 13:49:50 / 个人分类:QC

版权声明:原创作品,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。51Testing软件测试网 V8@ B;c6oe:y

目标:51Testing软件测试网 Ok Ayt`^Y/Yg

rWu;i'f qwhT0实现每周末自动对这周所有项目缺陷状态分类统计,了解一周内缺陷的变化情况,统计完成后自动给相关人员发送邮件。51Testing软件测试网3| r"T5l r k

51Testing软件测试网 E"F"o$Td W#sI6@D

只是简单的分类统计,有需要者可以根据自己部门的需求进一步进行扩展

W,Y2rQfa+|H"n051Testing软件测试网?PT7]UU

实现:51Testing软件测试网s+T:ro z:y ?2F.N

M,No0PIl$a0利用windows的任务管理计划调用vbs执行
%G&f y*uGH0需要发送多人邮件的话,可用","分离多个邮件地址

6u5JL ^Nv%g]_c.J0

N w%Du8W t9g\Y0局限:

W X9b%ds&s o0

3Lv|H@O!Pf0目前9.0版本的QC无法支持中文域名和项目名

4H8d9T-i Y)s*i m0

? Ihh|Q0

/AXY2dx,wg$U0o051Testing软件测试网9n aJiNH [:y
Flag = IsFriday()

,uQN Zsc"d0

q{5m8u4gT0If Flag = True Then
'yRy"AK['] [:i0 Call ProjectInfo("xxxxx","xxx","xxx","xxx")
kYuwl1H7J,j"O0End If

7d%MQ5}^.Z051Testing软件测试网omWU:q

'获取QC上所有项目,循环统计51Testing软件测试网!e0O)Zg)uM$L
Function ProjectInfo(qcUrl,qcUsername,qcPassword,qcDomain)
;p7S/jNw&BQ`9b!z0 Set Tdc = CreateObject("TDApiOle80.TDConnection.1")51Testing软件测试网 }.Ek,^#vk
 If Not Tdc.Connected Then51Testing软件测试网0|^2v,xrYD-W
  Tdc.InitConnectionEx qcUrl51Testing软件测试网M(~&^Ew&v:J6I+w
  Tdc.Login qcUsername,qcPassword51Testing软件测试网%ys)X9D3i,wG7z7oN
 Else
:CUSl1K9{^L0  Tdc.Disconnect51Testing软件测试网_j)w'wRI
  Tdc.Logout
B u/T;|%BH.@0  Tdc.ReleaseConnection51Testing软件测试网'Z2tB8EJ8e.c
  Tdc.Login qcUsername,qcPassword
Yh z!G1Z6G E6V0 End If
KG0j6n,p0 51Testing软件测试网!_T u;K+A!|\pzs
 Message = ""51Testing软件测试网7n _jDd ihdk
 Msg = ""
C-k8W%C#{3f7H~1Q F0 51Testing软件测试网,vW/n_U
 For Each project In tdc.VisibleProjects(qcDomain)
F{,juh0  Tdc.Disconnect
o5G q5uSrnY0  Tdc.Connect qcDomain,project51Testing软件测试网4J V1l)]~pP
  Set BugFac = tdc.BugFactory
!m$o$s&s7Lz9aTu0  Set BugList = BugFac.NewList("")
9hjX"\|"O;a R4@&|0'  MsgBox BugList.count51Testing软件测试网G&X9r D0T#cS({V
  BugCount = 0
8HJH%pD6CVj0  ReferCount = 0 '提交51Testing软件测试网|"O3fxr$}/w r2B+u_
  RejectCount = 0 '拒绝
Z k]LX5_ Hq3@0  DeployCount = 0 ' 部署51Testing软件测试网4vPK'wL2g6?
  ValidateCount = 0 '验证51Testing软件测试网rq#H/N-X(H'P$qd*Z9Gm
  ClosedCount = 0 '关闭51Testing软件测试网P A0pot*t!c;cF+?
  ReopenCount = 0 '未修复
2_ DG%g4d+PjX)n0  For Each Bug In BugList51Testing软件测试网;~} kHy rb
   BugDate = CDate(Bug.Field("BG_DETECTION_DATE"))  51Testing软件测试网8\_Y*y.S
   CurrentDate = Date51Testing软件测试网&_ kr9a+{{ f|
   LastDate = GetLastWeekDate()
X@1bRe$l(R,B0   If (BugDate <= CDate(CurrentDate) And BugDate >= CDate(LastDate)) Then
ut'nV#I'_G2x0    '缺陷总数
%WI0PvG6e0    BugCount = BugCount + 1
[r[ Yu0@4Gz0    '已提交总数51Testing软件测试网X-fCt7`)Nby+V(f0Q
    If Bug.Field("BG_USER_01") = "已提交" Then
+I4T rW UR#B0     ReferCount = ReferCount + 151Testing软件测试网U4k7}E\/V
    End If
2c0i q.K0@?Y0    '已驳回总数
Igw2c4v;{;w0    If Bug.Field("BG_USER_01") = "已驳回" Then51Testing软件测试网Hv*pS0d.\Q
     RejectCount = RejectCount + 151Testing软件测试网N5c ~2\.q4[{b
    End If
1[ F*Z2Yh0OU0    '待部署总数51Testing软件测试网 O;b:Ow)B6r`SF#d
    If Bug.Field("BG_USER_01") = "待部署" Then51Testing软件测试网j+I@0HdJqUj
     DeployCount = DeployCount + 1
V A%C2F,S$O/s0    End If51Testing软件测试网L {:H+^?+G
    '待验证总数
v^4dGH Y0    If Bug.Field("BG_USER_01") = "待验证" Then
@W| MU/p0     ValidateCount = ValidateCount + 1
DV)n { kV Z0    End If
[@2_Y ?0    '未修复总数51Testing软件测试网\A-f${{9S
    If Bug.Field("BG_USER_01") = "未修复" Then51Testing软件测试网hwr9o2p'|1T
     ReopenCount = ReopenCount + 1
2A1O-ko}bn"b~(m%]0    End If
W H L'ia\!Q0    '已关闭总数51Testing软件测试网 @ G$fkM*Qy
    If Bug.Field("BG_USER_01") = "已关闭" Then51Testing软件测试网uZTv;cY[
     ClosedCount = ClosedCount + 151Testing软件测试网!TrF&J:sWs'p
    End If51Testing软件测试网 L/RH*{.Y-M#z
   End If51Testing软件测试网 Sk^Wx4u\ vmhF
  Next
LY%pV2Gt0  Message = Message + "<p><table width=100 border=""1"" align=""left"">"& VbCrLf &_
Z/V{s4E/xy*\0       "<th colspan=2>"&project&"</th>"& VbCrLf &_
2?(~6jjwJ6o/g0       "<tr><td width=60%>"&"已提交"&"</td><td width=40%>"&ReferCount&"</td></tr>"& VbCrLf &_
CG;yexLd0       "<tr><td>"&"已驳回"&"</td><td>"&RejectCount&"</td></tr>"& VbCrLf &_51Testing软件测试网4GpSS.L4kN{n
       "<tr><td>"&"待部署"&"</td><td>"&DeployCount&"</td></tr>"& VbCrLf &_51Testing软件测试网O0s(g9K6GQ9e7w
       "<tr><td>"&"待验证"&"</td><td>"&ValidateCount&"</td></tr>"& VbCrLf &_51Testing软件测试网'r2a&d4V,?h3q:\A:h
       "<tr><td>"&"未修复"&"</td><td>"&ReopenCount&"</td></tr>"& VbCrLf &_51Testing软件测试网?%V,t*d;l'k^!p T{
       "<tr><td>"&"已关闭"&"</td><td>"&ClosedCount&"</td></tr>"& VbCrLf &_51Testing软件测试网:G{a8].B }
       "</Table></p>"& VbCrLf
M.^6i |tkf:AQ E%P?7n0'   MsgBox Message
b k3k e7G2OJ0  Set BugList = Nothing51Testing软件测试网M1yP+]#h5?`6D&i&X
  Set BugFac = Nothing51Testing软件测试网}(|*^J xyus O
 Next
| si:t*\0 Msg = "<html><head><title></title>" &VbCrLf &_51Testing软件测试网aI'u/}8s$x-Z @Vcl
   "<style. type='text/css'>"&VbCrLf &_
l.kr@4K$y M\0   "td,form,select,input,p,table,.font {font-size: 12px;line-height: 20px}"&VbCrLf &_51Testing软件测试网H8i:D|Q|8[3H
   "table"&VbCrLf &_
`Cmq!Q8[8bX0   "{border-collapse: collapse}"&VbCrLf &_
$soR-R%?X}4K2P0   "</style>"&VBCRLF &_
a W{yI&i*S Q@!d0   "</head><body>"&Message&"</body></html>"
&Ii@w{0 Call SendMailMessage("xxx","xxx","xxx","xx",msg,"xxx")51Testing软件测试网}(R+yiFl i"B6G
 Tdc.Disconnect
p P5t a&oHVR0 Tdc.Logout51Testing软件测试网,^:lbV6[7Yq%?
 Tdc.ReleaseConnection
-L4ptO1{ZU0 Set Tdc = Nothing
0i-RY s:O3E}z0End Function51Testing软件测试网hMBE,r {

51Testing软件测试网{&UD [`+t;}$[!z

'邮件发送方法
\,y:y:VIW e0A8K.h0Sub SendMailMessage(FromMail,MailPassword,ToMail,MailName,MailMessage,SmtpServer)
#J9i {#U#d DMt0 FromMailName=Split(FromMail , "@", -1, vbTextCompare)
8R_%N9URvIp0 MS_Space = "http://schemas.microsoft.com/cdo/configuration/"51Testing软件测试网 h:wn^Q%a@
 Set Email = CreateObject("CDO.Message")51Testing软件测试网@'o U*pD9b%@ x[ l
 oEmail.From = FromMail '发送邮件地址51Testing软件测试网O%DP'JGb;e`
 oEmail.To = ToMail '送达邮件地址
)c3bI#x-z Ab0 '处理中文乱码51Testing软件测试网|uK;ai
 Set BodyPart = oEmail.BodyPart51Testing软件测试网6j'u'c7rs ~
 oBodyPart.Charset = "UTF-8"
MRi#I!L h,I D0 oEmail.Subject = MailName '邮件标题51Testing软件测试网Q&y!AZd8}Cg4T
 oEmail.HTMLBody = MailMessage '邮件正文
3fa.\ `Mxo0 '配置邮件发送
!dr \H*e9`%Y!F0 With oEmail.Configuration.Fields
Qd(sE7karN0  .Item(MS_Space&"sendusing") = 2 '发信端口51Testing软件测试网U)P*C8O)x0z:Rb-e
  .Item(MS_Space&"smtpserver") = SmtpServer 'SMTP服务器地址51Testing软件测试网 `:?tl t3S
  .Item(MS_Space&"smtpserverport") = 25 'SMTP服务器端口
&U?*o~y9x"c0  .Item(MS_Space&"smtpauthenticate") = 1
$Ye9^{ F.C0  .Item(MS_Space&"sendusername") = FromMailName(0) '邮件帐号51Testing软件测试网 l!ul8@SB
  .Item(MS_Space&"sendpassword") = MailPassword51Testing软件测试网m;A&n-W8[
'   .Item(MS_Space&"cdoSendlanguagecode")="UTF-8"51Testing软件测试网"y)Ee V{y L
  .Update51Testing软件测试网\-ca` m
 End With51Testing软件测试网R Eo C4j\"o6S;}9s
 '发送邮件
l7UBM8}fGQZ0 oEmail.Send51Testing软件测试网$exh*r {$F
 '释放对象
| Xl^$Ya l0 Set BodyPart = Nothing
~/?+I4lq/z0Z%A4}L @iH0 Set Email = Nothing51Testing软件测试网Hc+x4a&~0_$\QP
End Sub

5LV6A$m+_WQ0M.p8a0

5u2Ds/r Zi}0'判断当前日期是否星期五51Testing软件测试网y@*ww{
Function IsFriday()
n+c:nulY,GM:u0 CurrentDate = Date
7nB U,z T"J`0 Num = Weekday(CurrentDate,2)
'X,x$\1Ab?4Z0 If Num = 5 Then
D-u1`!G%x.`hk~ J4T0  Flag = True
H?Pdq&E%] |[0 Else
:[ m"r A&u2^/{ gs)N5d0  Flag = False
a'Zx$e-m L0x0 End If
!w0zr&@y0 IsFriday = Flag
4T6[3Q5~(l cX0End Function

d{O/A*Z%Yl!_"W"u051Testing软件测试网/~r.sr"J}0r#y

'获取当前日期前一周日期51Testing软件测试网 {VTC2\ Bz
Function GetLastWeekDate()51Testing软件测试网/Xb8}SX#k
 CurrentDate = Date
m(L8G@ iqa(HOD0 LastWeekDate = DateAdd("d",-7,CurrentDate)
VB F'P3s-| A|0 GetLastWeekDate = LastWeekDate
N~8pcR_0End Function51Testing软件测试网1L'U%QQgptaWQ

51Testing软件测试网w/Qi\ @Mf

%JB%tf Q*AL0本文出自zte_boy的51Testing软件测试博客:http://www.51testing.com/?16178751Testing软件测试网 ]yx*YPh~hE


TAG:

刘沛的测试空间 引用 删除 zte_boy   /   2009-04-22 23:41:48
是的,呵呵
引用 删除 Jane.Li   /   2009-04-22 17:03:18
这个是VBS的么?
 

评分:0

我来说两句

日历

« 2024-05-14  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 91286
  • 日志数: 79
  • 图片数: 1
  • 建立时间: 2008-05-18
  • 更新时间: 2009-06-04

RSS订阅

Open Toolbar