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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chenfeng086/article/details/37497783

智能推荐

前端开发之vue-grid-layout的使用和实例-程序员宅基地

文章浏览阅读1.1w次,点赞7次,收藏34次。vue-grid-layout的使用、实例、遇到的问题和解决方案_vue-grid-layout

Power Apps-上传附件控件_powerapps点击按钮上传附件-程序员宅基地

文章浏览阅读218次。然后连接一个数据源,就会在下面自动产生一个添加附件的组件。把这个控件复制粘贴到页面里,就可以单独使用来上传了。插入一个“编辑”窗体。_powerapps点击按钮上传附件

C++ 面向对象(Object-Oriented)的特征 & 构造函数& 析构函数_"object(cnofd[\"ofdrender\"])十条"-程序员宅基地

文章浏览阅读264次。(1) Abstraction (抽象)(2) Polymorphism (多态)(3) Inheritance (继承)(4) Encapsulation (封装)_"object(cnofd[\"ofdrender\"])十条"

修改node_modules源码,并保存,使用patch-package打补丁,git提交代码后,所有人可以用到修改后的_修改 node_modules-程序员宅基地

文章浏览阅读133次。删除node_modules,重新npm install看是否成功。在 package.json 文件中的 scripts 中加入。修改你的第三方库的bug等。然后目录会多出一个目录文件。_修改 node_modules

【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure-程序员宅基地

文章浏览阅读883次。【代码】【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure

整理5个优秀的微信小程序开源项目_微信小程序开源模板-程序员宅基地

文章浏览阅读1w次,点赞13次,收藏97次。整理5个优秀的微信小程序开源项目。收集了微信小程序开发过程中会使用到的资料、问题以及第三方组件库。_微信小程序开源模板

随便推点

Centos7最简搭建NFS服务器_centos7 搭建nfs server-程序员宅基地

文章浏览阅读128次。Centos7最简搭建NFS服务器_centos7 搭建nfs server

Springboot整合Mybatis-Plus使用总结(mybatis 坑补充)_mybaitis-plus ruledataobjectattributemapper' and '-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏3次。前言mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。..._mybaitis-plus ruledataobjectattributemapper' and 'com.picc.rule.management.d

EECE 1080C / Programming for ECESummer 2022 Laboratory 4: Global Functions Practice_eece1080c-程序员宅基地

文章浏览阅读325次。EECE 1080C / Programming for ECESummer 2022Laboratory 4: Global Functions PracticePlagiarism will not be tolerated:Topics covered:function creation and call statements (emphasis on global functions)Objective:To practice program development b_eece1080c

洛谷p4777 【模板】扩展中国剩余定理-程序员宅基地

文章浏览阅读53次。被同机房早就1年前就学过的东西我现在才学,wtcl。设要求的数为\(x\)。设当前处理到第\(k\)个同余式,设\(M = LCM ^ {k - 1} _ {i - 1}\) ,前\(k - 1\)个的通解就是\(x + i * M\)。那么其实第\(k\)个来说,其实就是求一个\(y\)使得\(x + y * M ≡ a_k(mod b_k)\)转化一下就是\(y * M ...

android 退出应用没有走ondestory方法,[Android基础论]为何Activity退出之后,系统没有调用onDestroy方法?...-程序员宅基地

文章浏览阅读1.3k次。首先,问题是如何出现的?晚上复查代码,发现一个activity没有调用自己的ondestroy方法我表示非常的费解,于是我检查了下代码。发现再finish代码之后接了如下代码finish();System.exit(0);//这就是罪魁祸首为什么这样写会出现问题System.exit(0);////看一下函数的原型public static void exit (int code)//Added ..._android 手动杀死app,activity不执行ondestroy

SylixOS快问快答_select函数 导致堆栈溢出 sylixos-程序员宅基地

文章浏览阅读894次。Q: SylixOS 版权是什么形式, 是否分为<开发版税>和<运行时版税>.A: SylixOS 是开源并免费的操作系统, 支持 BSD/GPL 协议(GPL 版本暂未确定). 没有任何的运行时版税. 您可以用她来做任何 您喜欢做的项目. 也可以修改 SylixOS 的源代码, 不需要支付任何费用. 当然笔者希望您可以将使用 SylixOS 开发的项目 (不需要开源)或对 SylixOS 源码的修改及时告知笔者.需要指出: SylixOS 本身仅是笔者用来提升自己水平而开发的_select函数 导致堆栈溢出 sylixos

推荐文章

热门文章

相关标签