求小说《宛香》by宛香佟佳东珠珠百度云谢谢!!

robotFramework——静态API方式自定义测试库简介 - 海盗雪绒花的测试博客 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
robotFramework——静态API方式自定义测试库简介
& 20:04:27
/ 个人分类:
&& robotframework只是一个的框架,它本身无法识别任何UI对象,当然也不能操作任何UI对象。RF是利用丰富的测试库来识别和操作测试对象。RF的测试库和的插件功能上异曲同工。例如,用Selenium2Library库测试应用,用SwingLibrary测试应用。当然测试工程师还可以根据自己的需要定制测试库,这是RF最大的魅力之一。QTP是靠卖插件的liense赚钱,而且不开放。在这一个点上QTP完全不能和RF相比。&& RF有三种方式定制测试库:静态API、动态API和混合API。我们先来介绍使用静态API方式定制测试库。这里我举一个简单的小例子说明。先写一个的类,代码如下:将源代码文件命名为MyLibrary.py,然后放在D:\python27\lib\site-packages\目录下。当然放在什么位置,根据你本机的情况决定,只要Python能够找到就行。可以打开python idle,然后输入:&& import MyLibrary如果系统能够正常引入MyLibrary,则说明能够找到这个测试库。&& 下一步,将MyLibrary作为library引入。在 suite中的setting中,按“library”按钮。library的“name”中输入“MyLibrary”。记住library的名字一定要与测试源代码文件的名字相同。然后在test suite下创建一个,内容如下:其中第一列的关键字“print message”,实际就是MyLibrary类的print_message方法。第二列是print_message方法的参数,运行结果如下:注意,这里的关键字中,“print”和“message”之间没有“_”。但MyLibrary类中的“print_message”方法名称是有“_”的。这是RF的一个机制:方法(或者函数)名字中的“_”,写成关键字名字时,可以用空格代替。当然,关键字中也可以直接写方法(或者函数)名称。这个例子中,关键字“print_message”和“print message”效果是一样的。从这个例子中,我们可以看出:RF的library功能,实际就是import一个python的moudle。而关键字,则是moudle中可以使用的方法(或者函数)。1042人阅读
ASP.NET(56)
本文来自网络:
在网站开发过程中,需要在本地电脑中对编辑的效果进行浏览,就需要在本地IIS中开设主机,一般我们会用IIS的默认80端口,访问的时候在浏览器输入“Localhost”或者“127.0.0.1“即可成功访问,但是需要开设多个主机时,就需要使用不同的端口,比如81、82等等,这样多了以后,就有些乱了,有时由于程序的原因,对端口不能识别,造成一些错误。我们能不能在本地自定义测试域名呢?比如:现在做一个商城,就在IIS中绑定一个主机头:,做一个交友网站,就在IIS中绑定一个主机头:,然后在测试时,在浏览器中输入:或就可以访问。答案是肯定的,具体的方法如下:
打开文件:c:\windows\system32\drivers\etc\hosts,在文件的尾部添加:
然后保存文件,就可以在IIS中绑定使用了,使用了这个办法,在开发有分站系统的门户网站时,就轻松很多了,可以直接将正式域名及其的分站域名加入该文件,做到本地测试和外网测试效果相同。
需要说明的是,该方法的域名必须一条一条添加,不支持泛域名,如果想用泛域名的话,可以使用BIND,它是一个开源的跨平台的DNS服务器软件,需要安装并配置文件(c:\windows\system32\dns\etc下)即可,具体的方法,大家可以百度一下。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:275545次
积分:3565
积分:3565
排名:第8471名
原创:81篇
转载:145篇
评论:76条
(10)(2)(1)(2)(1)(5)(1)(1)(2)(1)(1)(1)(4)(14)(12)(4)(7)(2)(9)(1)(2)(3)(3)(7)(4)(2)(1)(4)(1)(1)(2)(4)(1)(3)(1)(1)(1)(3)(20)(19)(9)(4)(10)(10)(9)(5)(10)(5)(5)Robot Framework: 自定义自己的python库-微众圈
微众圈,我的微信生活圈!
Robot Framework: 自定义自己的python库
摘自公众号:发布时间: 23:25:38
吴老的《selenium webdriver 实战宝典》出版了!利用Robot Framework编写测试用例,往往需要开发自己的关键字,有的关键字需要通过自己编写python代码来实现。这在rf中,就需要自己定义python库。这个过程其实不复杂,本文来介绍下。1、在python安装目录下的 Lib\site-packages 目录下 新建一个目录,目录名就是库名,如 NewLibrary2、在新建的NewLibrary目录下创建一个python文件,任何合法的文件名即可,扩展名为py。如:myclass.py其内容如下class MyClass(object): def __init__(self): pass def printMsg(self,msg): print &hello &+msg上面代码定义了一个python类,其中除构造方法 _init_ 外,还定义了一个printMsg方法,该方法其实就是rf中的关键字,可以直接在rf中使用。下面我们介绍。3、在新建的NewLibrary目录下创建 __init__.py 文件,文件名必须固定这样。该文件的功能,就是把关键字类暴露出来,让rf能知道。其内容如下:from myclass import MyClassclass NewLibrary(MyClass): ROBOT_LIBRARY_SCOPE = 'GLOBAL'4、通过前面三个步骤,一个最简单的自定义的NewLibrary库就创建好了,在rf工具中就可以使用了1)先要导入 NewLibrary 库2)使用关键字printMsg。需要说明的是,在rf中引用时,既可以写成 printMsg,也可写成 print msg。一般习惯用空格把单词分开。因为rf关键字不区分大小写。*** Test Cases ***successsd print msg god printMsg ss printmsg yy5、增加新的关键字增加新的关键字很简单,只需在MyClass类中增加新的方法即可。如:class MyClass(object): def __init__(self): pass def printMsg(self,msg): print &hello &+msg
def join_info(self,a,b): print a+b这里定义了 join_info方法。在rf中使用时,可以写成 join info 用空格分开。上面介绍了最简单的自定义模块,虽然简单,但实际可以满足大部分自己开发的需求了。(作者:51kata 来源:/51kata/p/5126227.html)公益传播测试知识、技能与!感谢作者!分享测试生活,思考测试人生!欢迎投稿!文章图片来自网络,如有侵权请见谅,请联系我们妥善处理。光荣之路软件测试培训官网:微信公众号:gloryroadtrain性能测试QQ群:测试招聘QQ群: 自动化3群QQ: Python群:
微信号:GloryRoadTrainyifangyou 的BLOG
用户名:yifangyou
文章数:170
评论数:90
访问量:207985
注册日期:
阅读量:5863
阅读量:12276
阅读量:424708
阅读量:1113109
51CTO推荐博文
下面是一个模拟get或者post请求的方法支持
1.get,post方法
2.自定义参数
3.自定义header
4.返回服务器的返回内容和header
5.支持相特定的服务器请求url,适合测试cdn节点
&?php &error_reporting(0); &$user_agent=&Mozilla/5.0&(W&U;&Windows&NT&6.0;&en-US;&rv:1.9.0.10)&; &&list($rheaders,$conntent)=request_url(&60.28.14.148&,&80&,&get&,&/www/iskin960/qqcomlogo.png&,array(&User-Agent&=&&$user_agent),array()); &&&if($rheaders[&httpstatus&]&=200&&$rheaders[&httpstatus&]&=300) &{ &&&&&&&if($rheaders['Content-Type']!=&&) &&&&&header('Content-Type:&'.$rheaders['Content-Type']); &&&&&echo&&&&&$conntent; &&}else&{ &&&&&&&&&&if($rheaders[&httpstatus&]&=300&&$rheaders[&httpstatus&]&=400){ &&&&&&&&&&&&&list($rheaders,$conntent)=request_url(&&,&&,&get&,$rheaders[&Location&],array(&User-Agent&=&&$user_agent),array());&&&&&&&& &&&&&&&&&&&&&if($rheaders[&httpstatus&]&=200&&$rheaders[&httpstatus&]&=300) &&&&&&&&&&&&&{ &&&&&&&&&&&&&&&&&&&&&&&&&&&&if($rheaders['Content-Type']) &&&&&&&&&&&&&&&&&&&&&header('Content-Type:&'.$rheaders['Content-Type']); &&&&&&&&&&&&&&&&&echo&&&&&$conntent; &&&&&&&&&&&&&} &&&&&} &&&&&&} &&&&&&&&&&&&&&&&&function&request_url($ip,$port,$method,$aURL,$headers,$aParamsArray) &{ &&&&&$rheaders=array(); &&&&&&$rheaders[&httpstatus&]=0; &&&&&&&&&&$URL=parse_url($aURL); &&&&&if(!$port) &&&&&{ &&&&&&&&&&&&&&&&&&$port=($URL[&port&]?&$URL[&port&]:80);&&&& &&&&&} &&&&&if(strcasecmp($method,&get&)==0){ &&&&&&&&&$method=&GET&; &&&&&}else{ &&&&&&&&&$method=&POST&; &&&&&} &&&&&&&&&&foreach($aParamsArray&as&$key=&&$value) &&&&&{ &&&&&&if($flag!=0) &&&&&&{ &&&&&&$params.=&&&; &&&&&&$flag=1; &&&&&&} &&&&&&$params.=$key.&=&; &&&&&&$params.=urlencode($value); &&&&&&$flag=1; &&&&&} &&&&&&&&&if($method==&POST&) &&&&&&&&&{ &&&&&&&&&&&&$length=strlen($params); &&&&&&&&&&&}else&&&&&&&&&&{ &&&&&&&&&&&$length=0; &&&&&&&&&&&&&&&&&&&&&&$URL[&query&]=$URL[&query&].&&&.$params; &&&&&&&&&&} &&&&&&&&&&if($URL[&query&]){ &&&&&&&&&&&&&&&&&&&&&&&&&&&&$URL[&path&].=&?&.$URL[&query&].($URL[&fragment&]?&#&.$URL[&fragment&]:&&); &&&&&&&&&&} &&&&&&&&&&&&$fp=fsockopen($ip==&&?&$URL[&host&]:$ip,$port,$errno,$errstr,10); &&&&&&if(!$fp) &&&&&&{ &&&&&&&&&&&$rheaders[&httpstatus&]=-1; &&&&&&&&&&&&&&return&array($rheaders,$errstr.&---&&.$errno); &&&&&&} &&&&&&&&&&&&unset($headers['Host']); &&&&&&unset($headers['Content-Length']); &&&&&&unset($headers['Content-Type']); &&&&&&&&&&&&$header=&$method&&.$URL[&path&].&&HTTP/1.1\r\n&; &&&&&&$header.=&Host:&.$URL[&host&].&\r\n&; &&&&&&foreach($headers&as&$k=&&$v){ &&&&&&&&&&$header.=&$k:$v\r\n&; &&&&&&} &&&&&&if(!$header[&Content-Type&]){ &&&&&&$header.=&Content-Type:application/x-www-form-urlencoded\r\n&; &&&&&&&&&&&} &&&&&&$header.=&Content-Length:&.$length.&\r\n&; &&&&&&$header.=&Connection:Close\r\n\r\n&; &&&&&&if($method==&POST&) &&&&&&&&&&{ &&&&&&&&&&&&&&&&&&&&$header.=$params.&\r\n&; &&&&&&} &&&&&&&&&&&&&fputs($fp,$header); &&&&&&$inheader=1; &&&&&&$lineno=0; &&&&&&$conntent=&&; &&&&&&&while(!feof($fp)) &&&&&&{ &&&&&&&&&&&if($inheader){ &&&&&&&&&&$line=fgets($fp,1024);&&&&&&&&&&}else{ &&&&&&&&&&&&&&if($rheaders[&Content-Length&]&=0){ &&&&&&&&&&&&&&&&&&$line=fread($fp,$rheaders[&Content-Length&]);&&&&&&&&&&&&&&}else{ &&&&&&&&&&&&&&&&&&$line=fread($fp,1024);&&&&&&&&&&&&&&} &&&&&&&&&&} &&&&&&$lineno++; &&&&&&if($inheader){ &&&&&&&&&&if($lineno==1) &&&&&&&&&&{ &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(preg_match(&/^HTTP\/1\.[1|0]&(\d{3})/i&,$line,$match)){ &&&&&&&&&&&&&&&&&&&&&&$rheaders[&httpstatus&]=$match[1]; &&&&&&&&&&&&&&&&&&} &&&&&&&&&&} &&&&&&&&&&&&&&&&if(preg_match(&/^(.*):&(.*)$/i&,$line,$matches)){ &&&&&&&&&&&&&&&&&&&&&&&&&$rheaders[$matches[1]]=$matches[2]; &&&&&&&&&&} &&&&&&} &&&&&&if($inheader&&($line==&\n&||$line==&\r\n&)){ &&&&&&$inheader=0; &&&&&&continue; &&&&&&} &&&&&&if($inheader==0) &&&&&&{ &&&&&&&&&&&&&&&&$conntent.=$line; &&&&&&} &&&&&&} &&&&&fclose($fp); &&&&&return&array($rheaders,$conntent); &} &?&&
&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)}

我要回帖

更多关于 佟佳东珠宛香txt下载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信