51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4035|回复: 19
打印 上一主题 下一主题

[原创] 【已经解决,方法见内】问个有难度的问题,ACTION之间共享.net对象,如何实现?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-2-1 19:53:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在一个Action中创建了.net的对象,想要其他所有action都能共享。

[ 本帖最后由 yujie6832 于 2010-2-2 12:47 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-2-1 21:34:39 | 只看该作者
可以用类封装好并提供实例化函数接口…放公共函数库里…这里提供一个比较合理的…应该还有很多种方法…
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-2-1 23:08:24 | 只看该作者
我感觉,这个标题会吓到很多人,听上去也很深奥,其实方法的确很多的,不过我会的也就是楼上说的那种方法
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-2-2 08:35:24 | 只看该作者
原帖由 zzxxbb112 于 2010-2-1 21:34 发表
可以用类封装好并提供实例化函数接口…放公共函数库里…这里提供一个比较合理的…应该还有很多种方法…


还有什么其他方法?说说看,呵呵,长长见识。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2010-2-2 08:46:55 | 只看该作者
原帖由 zzxxbb112 于 2010-2-1 21:34 发表
可以用类封装好并提供实例化函数接口…放公共函数库里…这里提供一个比较合理的…应该还有很多种方法…


刚想了想,还是没有理解该怎么做,能否举个例子说明一下呢?

其实我的需求感觉就是让所有Action能够共享访问一个全局变量,这个变量里面存储.net类的一个实例。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-2-2 09:30:14 | 只看该作者

回复 5# 的帖子

这个很简单呀,你把.NET类的实例写到一个文件里去,可以用.TXT或者.VBS等为文件名,然后FILE-----SETTINGS------RESOURCES---------添加这个文件,点击下OK,就已经导入到QTP中了,以后的脚本都能调用这个,COMPLATED WORD里直接可以使用的,用法是CRTL+空格,要设置下
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-2-2 09:49:31 | 只看该作者
原帖由 yujie6832 于 2010-2-2 09:30 发表
这个很简单呀,你把.NET类的实例写到一个文件里去,可以用.TXT或者.VBS等为文件名,然后FILE-----SETTINGS------RESOURCES---------添加这个文件,点击下OK,就已经导入到QTP中了,以后的脚本都能调用这个,COMPLATE ...


恩,这样在Action之间可以共享了。

如果想要脚本之间共享,需要如何声明这个变量?

比如我在共享函数库中定义了一个变量,里面存储实例,在第一个脚本修改了这个实例的属性,在第二个脚本是否可以读取到这个修改?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-2-2 09:53:11 | 只看该作者

回复 7# 的帖子

既然ACTION可以,那么脚本间一定是可以的哦~
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2010-2-2 09:54:05 | 只看该作者
我再描述一个我碰到的问题,以前的好像说的不准确。

其实我是在使用QC的过程中,BPT测试组件间需要共享一个.net实例。

QTP运行的时候,先调第一个组件的脚本,我在第一个组件的脚本修改了实例的属性。

但在调用第二个组件脚本的时候,无法读取属性的改变,感觉QTP是重新加载了函数库,使函数库初始化了,无法在脚本之间共享状态。

有没有什么方法,能够共享到这个实例呢。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2010-2-2 09:55:42 | 只看该作者
原帖由 yujie6832 于 2010-2-2 09:53 发表
既然ACTION可以,那么脚本间一定是可以的哦~


我用QC,感觉QC调用QTP执行脚本的时候,每次都是重新加载函数库。

而action运行,是只加载一次函数库

所以action之间可以共享函数库状态改变,而QC调用QTP执行脚本,不能共享?
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2010-2-2 10:02:40 | 只看该作者

在网上搜到的,一会试下,看能不能解决我的问题。

你曾经遇到下面的问题么?
1、进程间的通信?
2、Action之间的信息传递?
3、在BPT框架中,模块间的信息传递?
4、机器间的信息传递?
5、当你的进程没有结束时,如何把信息保存在内存中?
6、如果以上的问题你还不能回答,那么现在有答案给你。

知识收件匣感到自豪的是,目前一个最新的解决方案来克服上述问题—知识收件匣的共享仓库

什么是知识收件匣的共享仓库?
知识收件匣的共享仓库是一个基于Activex的COM组件,允许你创建逻辑的仓库,存储对象和值。这种信息在没有被覆盖之前一直保存在系统中。简单的QTP代码如下:
'Create the shared store
Set SharedStore = CreateObject ("KnowledgeInbox.SharedStore")

'Add a new store
Set Store = oSharedStore.AddStore("GeneralTest")

'Create a dictionary object in shared store
Set Dict = oSharedStore.CreateObject("Scripting.Dictionary")

'Add the dictionary object to the store
oStore.AddItem "TestDictionary" , oDict

'Update some values in dictionary
oDict("CA") = "California"

'Destroy the object
Set Dict = Nothing

'Instruct shared to store to remain in memory
oSharedStore.PersistInMemory = True

'Destroy the shared store
Set SharedStore = Nothing

关闭QTP并打开一个VBScript的记事本
'Create the shared object store
Set SharedStore = CreateObject ("KnowledgeInbox.SharedStore")

'Get the specified store
Set Store = oSharedStore.GetStore("GeneralTest")

'Get the specified object from the store
Set Dict = oStore.GetItem ("TestDictionary")

'Will display california
MsgBox oDict("CA")

'Now instruct shared store to unload when destroyed
oSharedStore.PersistInMemory = False

'Destroy the shared store
Set SharedStore = Nothing


你曾经遇到下面的问题么?
1、进程间的通信?
2、Action之间的信息传递?
3、在BPT框架中,模块间的信息传递?
4、机器间的信息传递?
5、当你的进程没有结束时,如何把信息保存在内存中?
6、如果以上的问题你还不能回答,那么现在有答案给你。

知识收件匣感到自豪的是,目前一个最新的解决方案来克服上述问题—知识收件匣的共享仓库

什么是知识收件匣的共享仓库?
知识收件匣的共享仓库是一个基于Activex的COM组件,允许你创建逻辑的仓库,存储对象和值。这种信息在没有被覆盖之前一直保存在系统中。简单的QTP代码如下:
'Create the shared store
Set SharedStore = CreateObject ("KnowledgeInbox.SharedStore")

'Add a new store
Set Store = oSharedStore.AddStore("GeneralTest")

'Create a dictionary object in shared store
Set Dict = oSharedStore.CreateObject("Scripting.Dictionary")

'Add the dictionary object to the store
oStore.AddItem "TestDictionary" , oDict

'Update some values in dictionary
oDict("CA") = "California"

'Destroy the object
Set Dict = Nothing

'Instruct shared to store to remain in memory
oSharedStore.PersistInMemory = True

'Destroy the shared store
Set SharedStore = Nothing

关闭QTP并打开一个VBScript的记事本
'Create the shared object store
Set SharedStore = CreateObject ("KnowledgeInbox.SharedStore")

'Get the specified store
Set Store = oSharedStore.GetStore("GeneralTest")

'Get the specified object from the store
Set Dict = oStore.GetItem ("TestDictionary")

'Will display california
MsgBox oDict("CA")

'Now instruct shared store to unload when destroyed
oSharedStore.PersistInMemory = False

'Destroy the shared store
Set SharedStore = Nothing


回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2010-2-2 10:11:36 | 只看该作者
原帖由 dxf_michael 于 2010-2-2 10:02 发表
你曾经遇到下面的问题么?
1、进程间的通信?
2、Action之间的信息传递?
3、在BPT框架中,模块间的信息传递?
4、机器间的信息传递?
5、当你的进程没有结束时,如何把信息保存在内存中?
6、如果以上的问题你 ...


试验结果,根本创建不了这样的仓库对象。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2010-2-2 10:53:54 | 只看该作者
已经解决了,就是用knowledgeinbox可以解决,大家可以登录www.knowledgeinbox.com
去下载和察看使用文档,真的是VBS进程间,共享对象的好方法。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2010-2-2 12:45:33 | 只看该作者
呵呵,谢谢楼主提供的资料,不过11楼的方案是对的,保留对象到内存中,你没成功可能是代码需要改下
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2010-2-2 12:47:23 | 只看该作者
原帖由 dxf_michael 于 2010-2-2 10:53 发表
已经解决了,就是用knowledgeinbox可以解决,大家可以登录www.knowledgeinbox.com
去下载和察看使用文档,真的是VBS进程间,共享对象的好方法。

链接放绝对路径吧,像这个网站如果下载需要用户名登录的话,建议楼主也能帮人帮到底,提供个万能账号,呵呵,我会加分,鲜花
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2010-2-2 12:53:32 | 只看该作者
原帖由 dxf_michael 于 2010-2-2 09:55 发表


我用QC,感觉QC调用QTP执行脚本的时候,每次都是重新加载函数库。

而action运行,是只加载一次函数库

所以action之间可以共享函数库状态改变,而QC调用QTP执行脚本,不能共享?

关于这个,楼主在加载的时候有没有发现有一个SET AS DEFULT按钮,按一下,你加载的东西在QTP打开时候默认就有了哦,不过保存对象额方法的确很好,封装下,将会很实用
回复 支持 反对

使用道具 举报

该用户从未签到

17#
 楼主| 发表于 2010-2-2 14:21:25 | 只看该作者
原帖由 yujie6832 于 2010-2-2 12:47 发表

链接放绝对路径吧,像这个网站如果下载需要用户名登录的话,建议楼主也能帮人帮到底,提供个万能账号,呵呵,我会加分,鲜花


网站是随便注册的,可以用我的帐号  dxf_michael/123456
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2010-2-2 14:40:52 | 只看该作者

回复 17# 的帖子

这个不关键,关键是要给绝对路径,现在只是主页,要是能提供刚才那文章的绝对地址,就更好了,呵呵~
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2010-2-2 15:34:17 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2010-2-2 17:26:24 | 只看该作者

回复 19# 的帖子

恩,这个就对了。。。还有个文件需要安装呢,TARUN真是我的偶像
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-26 23:43 , Processed in 0.075421 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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