51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3286|回复: 6
打印 上一主题 下一主题

[原创] QC10.0 Workflow 中编写SCRIPT添加defect

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-7-2 15:59:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求助:
最近使用workflow编写项目的特定事件。
目前希望在更改defect某个状态时,可以拷贝当前的defect为一个新的Defect,敢为各位大侠,这样的脚本应如何编写
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

7#
发表于 2012-7-6 15:16:50 | 只看该作者
本帖最后由 wower1985 于 2012-7-6 15:18 编辑

回复 6# yeshaolin


    不太清楚你想怎么link,是想像实验室模块里面的 链接到缺陷的功能?这个好像有困难,不是不可能,QC的API很开放,理论上能实现很多自己想要的功能。。。。建议让你们的开发人员研究下,他们有写东西,领悟得快点。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2012-7-4 17:14:23 | 只看该作者
再次请教一下wower1985
请问如何通过脚本实现 DEFECT与DEFECT间的link?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2012-7-4 10:18:44 | 只看该作者
如您的帮忙,我已经可以正常post了。
(我这边的版本是QC10.0,数据库是ORACLE,不存在ID重复的问题)
总结整个过程,发现几个现象:
1.BugFactory.AddItem (Nothing)一执行,数据库就会自动添加一条带ID的BUG空记录。
2.Bug.post的过程,如果属性比较多,也就是有较多的内容要更新到数据库,则会卡住,有可能导致post失败(我这里测试是25个字段)。猜测这应该更SERVER端设置的超时有关系。
3.试过您这边提到的SQL的方式,问题同上,字段多了一样卡住,另外定位BUG_ID 很不方便,同时SQL语句繁琐、编写也很容易出错。
最后,衷心的感谢您的帮忙,谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2012-7-3 17:13:29 | 只看该作者
你写的这个可能可以,但是完全搬到你这来可能就运行不通过了,具体原因不想找了,我写的:


Sub Defects_Bug_FieldChange(FieldName)
  On Error Resume Next
     if Bug_Fields.Field("BG_STATUS").IsModified then
        Set Bug = BugFactory.AddItem (Nothing)
        Bug.Status = "New"
        Bug.Status = "已关闭"
        Bug.Summary = "测试测试测试测试"
        Bug.Priority = "3-中"
        Bug.AssignedTo = "test"
        Bug.DetectedBy = "test"         
        Bug.Post      
        Set Bug=nothing
     end if
  On Error GoTo 0
End Sub

这个我是能成功添加的,关于取bug的值,楼主自己搞,取附件。。。困难。。
注释:有人先new TDconnection,再实例化bugFactory,再实例化bug,事实是这个样子,但是这是别人在其他地方用的,在QC脚本编辑器里面,事实上,BugFactory对象已经实例化了,直接用就行,那用得着new来new去的。'Set BugFactory = TDConnection.BugFactory等等步骤全部去掉。
尝试过直接往bug表里面插数据,那样会导致再新建bug的时候报错。。。。。原因是bugID重复了,看来还是别直接插表了。。。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2012-7-3 15:07:38 | 只看该作者
非常感谢wower1985
我在网上找了一段代码:但试了以后没有效果。
Bug.post环节会卡很久,但无法new出新的defect, 请高人指点下 多谢了!
例子如下:
Dim QCConnection
Set QCConnection = QCUtil.QCConnection
if QCConnection.Connected  then
       msgbox("connect successfully")
end if

'Get the IBugFactory
Set BugFactory = TDConnection.BugFactory

'Add a new empty bug
Set Bug = BugFactory.AddItem (Nothing)

'fill the bug with relevant parameters
Bug.Status = "New"
Bug.Summary = "Connecting to TD"
Bug.Priority = "4-Very High" ' depends on the DB
Bug.AssignedTo = "admin" ' user that must exist in the DB's users list
Bug.DetectedBy = "admin" ' user that must exist in the DB's users list

'Post the bug to DB ( commit )
Bug.Post
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2012-7-2 17:33:57 | 只看该作者
本帖最后由 wower1985 于 2012-7-2 17:40 编辑

我明天有时间研究一下。。。。。。下班了

提供思路两种思路:1、触发状态时,取当前bug各个字段值,直接往数据库中插一条新的。
2、触发状态时,取当前bug各个字段值,new新bug,赋值,提交。(模拟操作过程)
都要查查QC开放指南。。。。。。。楼主可自行研究。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-20 06:55 , Processed in 0.069682 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表