QTP自动化测试之使用外部.Net DLL实现与Telnet的交互

QTP自动化测试之使用外部.Net DLL实现与Telnet的交互
发布于:2012-11-22 21:57:18来自【群】QTP                     QTP

希望公司喜欢使用QTP进行自动化测试的同事一起探讨和交流,这是一款强大的工具,我不希望像使用按键精灵那样的使用它。QTP自动化测试跟开发一样,有着一套完整的流程和体系,那么我们就从需求开始说起。

之前的课程过后,有同事开始询问我,公司很多的测试业务都在telnet中进行:

如:我们需要获取当前设备的一个编解码状态,然后返回到一个文本中。

那么,这里就涉及到一个难点,如何跟Telnet进行交互,学过网络的同事都应该知道,Telnet是属于TCP/IP协议簇的,大致的一个登陆过程,实现起来就极其复杂!

1)本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;

2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据报;

3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;

4)最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。

更不用说之后的交互过程了,向远端发送命令,返回信息后通过管道再继续输出。

这样一来,在QTP中与我们的Telnet交互就着实成为了一大难点。

其实牵强一点的办法有很多,我们可以通过调用Wsh直接sendkey操作,把CMD窗口置于激活状态,或者使用API接口直接定位窗口句柄,这些代码都不难,但是效果很差,一般Telnet的输出打印是无缝的,很难再去抽离出我们想要的结果,纯Split分割?那会疯掉的。。。。。。

其实,QTP为我们准备了另外一个强大的保留对象-DotNetFactory

可以直接调用.net类库和.net标准类库。

本方法适用对象---有一定编程基础的童鞋,熟悉.net C#编程

(至少要了解对象,方法,如何引用)

公司的一些复杂测试需求,难点测试需求,我们可以先通过C#进行自定义类的编写,然后定义一个公共方法,编译DLL文件后给QTP使用就行。

上面是编写好的Telnet类库,(其实完全不用担心会不会高级语言,网上直接拿优秀的开源类库就行

那么,针对我们的Telnet测试需求

'外部引用Telnet DLL类

set otel=DotNetFactory.CreateInstance("Mytelnet.telnet","d:\mytelnet.dll")

'描述一个telnet类

'Mytelnet.telnet --对应的是命名空间.类名

保留对象会自带三个参数,如果是外部引用DLL的话,要将完整路径放置于第二个参数内,这里不用担心反斜杠的转义。

但有一点需要注意,编译DLL的时候需要选择.net framework 3.5以下,QTP还不支持4.0框架版本以上的DLL调用。

调用完成之后,我们已经成功描述了一个telnet类

接下来的代码就跟C#中的调用一模一样了,实例化都不用了,QTP直接引用过来了。

例如telnet.send (参数1,参数2) '直接调用该DLL Telnet类的发送指令方法。

再通过收返回信息,我们就可以FSO到我们的文本中。

QTP文本的读写也可以使用.net标准类库,写一段参考代码给大家:

************.net 写文本文件************

set of=DotNetFactory("System.IO.StreamWriter",,"d:\1.txt") '调用该IO标准类,带一个文本文件路径参数

of.Write "你要写到文件中的内容" --这里就可以把我们Telnet返回回来的信息写入到文件中

of.close

of.dispose '清除对象

set of=noting '释放最初对象

***************Code End ***************

在这里,我分享一个C# Telnel类库,功能完善,且修复了字符乱码。

具体的完整代码,本帖会更新送上(由于我电脑上是VS2010 .NET 4.0框架的,编译出来的DLL,QTP调用发生错误)。

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值