Robot Framework--10 万能的evaluate

转自:http://blog.csdn.net/tulituqi/article/details/10124559

这一讲我们重点来介绍一下一个常用的关键字evaluate。

我觉得这个关键字在RF里几乎是无所不能,只要你略懂python语法,evaluate能让你直接运行python脚本。这样可以在Library没有给你提供你想要的方法时,直接用python脚本来实现你想要的方法。

下面我们列举一些常用的用法,这只是我演示的例子,实际的用途还有更多,欢迎大家自行研究。不熟悉python语法的就去查查python的帮助文档。

1、生成随机数

首先在第一个用法的同时,介绍一下这个关键字。

Evaluate有2个参数,一个是表达式,一个是模块。如图中弹出的窗口,里面有样例。他既可以进行逻辑运算,得到True或False的结果,如例1;也可以调用python的基础函数,如例2,;还可以调用特定的库,如例3;也可以调用多几个库,如例子4。

但是因为evaluate只能处理一行代码(个人理解),所以如果是很复杂的代码还是放到测试库里去实现比较好。

接下来说第一个,生成随机数,整数。其实和样例一样很简单,没用很复杂的,大家可以根据需要自己修改随机数的范围。

运行结果为:

2、字符串

主要是通过看python帮助找到了一些字符串的集合。

上面主要是列举了一下string里的常量,相当于不同字符的集合吧,有什么用处呢?在第二行可以看到一个简单的应用。看看运行结果:

每个都是所属字符的集合,英文大家自己找一下翻译吧。

PS:上面的像乱码一样的东东我也不知道是啥哈。。。

3、生成随机字符串

刚才说了,第2个里面那么多常量有什么用呢?下面来结合一下。

我先选定一个string的常量,然后判断他的长度,设定要生成多少位长度的字符串,然后使用循环生成我需要的随机字符串。实际上该方法在我的QTLibrary里有实现,只不过想试一下,在RF里也可以实现同样的方法。

放一下我的QTLibrary里面类似的方法如何实现的,核心代码差不多,实际代码略有差异。虽然RF里实现略复杂,但也能实现出来,不得不感叹一下RF的强大,之前有人问过我RF的特点,我的理解是:”像写案例一样写代码,像写代码一样写案例“。

好了,还是运行一下RF里面的案例吧,中间加了很多log,只截一下前面和最后的运行结果:

4、去除字符两边的空格,及其他一些字符操作。

第2行是去掉字符串空格的操作,第3行是替换字符的操作。

第7、11行是用来处理一些中文显示的,以后有机会细说中文处理的吧,虽然python本身就处理中文不是很好,有时候还是会有些问题,但第11行还是能把一些中文的unicode编码转成中文显示出来的(很奇怪个别同事的电脑上配置和我一样,但是在某些中文处理总报错)。

第12行是计算字符串里的”行“字的个数。

最后几行是一个字符串连接和字符串替换。

其他的行可能是之前写的多余的代码没有去处理,可跳过。这是以前就写在一起了,懒得分开了,大家将就着看吧。

好了,对照一下前面列的几个点来看运行结果:

可以看到,一开始aaa是两边都有空格的,处理后没有空格了。剩下的对照一下脚本看结果吧:

5、日期加减

其实昨天在群里讨论到日期的地方,我整理了一下大概有三种:

a、如果对日期无要求的,直接写死就好了。这个我就不列了,应该不难吧,有需要的再联系我。

b、需要用当前的日期进行加减的,可以直接用get time这个关键字,后面可以跟上你需要返回的值,以及日期的加减,如第一行就是加一天。

c、需要用一个指定日期进行加减的,指定日期可能是从页面获取的。从第2行到第7行可以解决这个问题,当然我现在这是举例,偷懒一下就用系统日期了;如果是从页面获取,那就是把第2行和第3行换成你的日期获取的脚本即可。

有的命令比较长的,显示不出完整的,我写在下面。

第7行的代码:

[python] view plaincopyprint?

  1. datetime.date(int(‘${year}‘),int(‘${month}‘),int(‘${day}‘))+datetime.timedelta(days=int(‘${addDays}‘))

${addDays}是用来进行加减的,也可以写成-2,后面运算时就会减2天,如果你想加减其他的,比如时分秒,就修改timedelta里面的days=这个参数,具体哪些可以用的查一下python帮助文档。

顺便说一下为什么写成这样带引号的,首先datetime.date的几个参数都要用int类型的,所以我用int了一下变量,但是后来发现,在int时,有时候会出现一些报错,我不记得报错原因了,但是有的机器报错,有的不报,然后就给变量上加了引号来解决这个问题。欢迎各位自己尝试一下。

第9行的代码:

[python] view plaincopyprint?

  1. time.strftime("%Y-%m-%d-%H-%M-%S")

这个是格式化时间显示的,你可以根据自己的需要来处理。下面看看运行结果:

6、执行dos命令

RF里也可以执行dos命令,很神奇么?

我先在D盘SVN目录下准备了一个qt目录,然后执行rd来删除他,最后用个dir命令来打印结果到D盘的test.txt文件里。

先运行一下看看:

看到结果很奇怪吧,这是啥意思呢?我之前根据结果,只知道0是成功,不成功的有1啊,2啊之类的。后来找度娘查了一下:

因此我们的第一个删除目录的命令肯定是失败了,为啥呢?其实我是在目录里放了个文件,用过dos的rd命令的都知道,这个命令删除目录需要目录为空,除非你带/s的参数,就算带了/s还要有个确认的过程,所以还要带上/q。

虽然第一个失败了,但是第二个还是成功了的,因为他返回了0,所以我们看一下第二个的结果:

大家可以看到,我直接用的dir,他当前的目录实际上是测试脚本所在的目录。

然后我修改了一下脚本,先删除一下那个文件,当然你也可以按我前面说的直接加上 /s /q 的参数。

再执行一次,看看结果:

7、打印系统值

这是顺着前不久群里的朋友问的问题顺手做了一个。

这几个值的结果还略有不同,大家根据自己的需要选择使用吧:

总结一下,Evaluate这个方法非常有用,你可以发挥你的想象,尽情的使用他吧。不过切记开头说的,如果特别复杂的逻辑,还是用test library来实现吧。希望本篇对大家有所帮助。

时间: 2024-10-12 21:35:37

Robot Framework--10 万能的evaluate的相关文章

Robot Framework自动化测试(五)--- 开发系统关键字

最近一直在用robot framework 做自动化测试项目,老实说对于习惯直接使用python的情况下,被框在这个工具里各种不爽,当然,使用工具的好处也很多,降低了使用成本与难度:当然,在享受工具带来便利的同时也会受制于工具.对于特定的需求,工具没提供相关的Library和关键字的时候,就只能放弃了. 还好robot framework提供了 Evaluate 关键字,对于Evaluate 关键字的使用等有时间再讲.当robot framework 不能解决需求,我是直接写个.py 程序,通过

Robot Framework常用关键字介绍

下面关键字全部由 Builtin 库提供,Builtin 为 Robot Framework 标准类库.Builtin库提供常用的关键字 1.log log 关键字就是编程语言里的"print"一样,可以打印任何你想打印的内容. 2.定义变量 通过"Set variable"关键字来定义变量 3.连接对象 "Catenate"关键字可以连接多个信息 加上"SEPARATOR="可以对多个连接的信息进行分割. 4.定义列表 通过

Robot framework(RF) Builti,Screenshot和Collections标准库介绍

1.1  Builti标准类库 在学习一门编程语言的时候,大多教材都是从打印“hello world”开始.我们可以像编程语言一样来学习Robot Framework.虽然通过RIDE 提供“填表”一样的写测试用例的方式.但它却有着像编程语言一样的强大的关键字,以及可以开发关键字的扩展能力. Builti标准类库包含了很多最常用的关键字,下面就逐一介绍常用关键字的使用. 3.7.1 log 关键字 log 关键字就是编程语言里的“print”一样,可以打印任何你想打印的内容. 在log关键字测试

python+robot framework接口自动化测试

python+requests实现接口的请求前篇已经介绍,还有不懂或者疑问的可以访问 python+request接口自动化框架 目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的封装实现一定意义上的脚本与用例的脱离! robot framework 的安装不过多说明,网上资料比较太多~ 实例:!!!!! 步骤一:新建项目 测试项目可以目录或文件存储,格式可以用TXT,TSV或HTML格式, 建议项目选择目录和TXT,这样便于管理 步骤二:新建测试套 测试套与测试项目一样,也

Robot Framework自动化测试(六)--- robotremoteserver使用

robotremoteserver 是什么? Python Remote Server for Robot Framework 下载地址:https://pypi.python.org/pypi/robotremoteserver/ robotremoteserver是一种远程库接口技术(remote library interface).其实,通过这两天的使用,我的理解它就是一个远程库的容器.这看上去有点不太好理解,我们知道当我要使用的Robot Framework的库是被安装在..\Pyth

使用Robot Framework框架远程操作UNIX系统

bot Framework是一个强大的自动化测试框架,依靠社区力量编写的Test Library为它提供了非常强的扩展性.下面我将介绍的就是如何使用第三方提供的扩展测试库(Test Library)来远程登录Unix,并在上面做常见操作. 环境准备(W32环境下): 1.首先我们得拥有Robot Framework的运行环境. a.必须安装python,因为Robot Framework是用python实现的,目前Robot Framework只支持Python2.X版本. b.安装Robot

Robot Framework+Oracle

本篇记录Robot Framework连接oracle数据库的安装 1.基础环境首先,robotframework的基础环境+DatabaseLibrary环境要准备好,这两个环境的搭建在前面已经讲过了.robotframework环境的搭建:http://www.cnblogs.com/zhengyihan1216/p/6397478.htmlDatabaseLibrary环境的搭建:http://www.cnblogs.com/zhengyihan1216/p/6516490.html 2.

Robot Framework自动化测试---Selenium API

一.浏览器驱动 通过不同的浏览器执行脚本. Open Browser Htpp://www.xxx.com chrome 浏览器对应的关键字: firefox FireFox ff internetexplorer Internet Explorer ie googlechrome Google Chrome gc chrome opera Opera phantomjs PhantomJS htmlunit HTMLUnit htmlunitwithjs HTMLUnit with Javas

分享:Robot Framework Lib

最近,软件测试讲到Acceptance Test-Driven Development,需要借助Robot Framework框架来写TestCase.考虑到大家没法科学上网,很多相关组件下载不了,笔者把自己下载的 x64 安装包打包了一下,分享给大家. Robot Framework的安装教程参考链接:http://www.cnblogs.com/txw1958/archive/2012/05/10/2494465.html:(安装过程中可能会出现一些错误,忽略就好,一步一步Next下去即可.

Robot Framework 1

about Robot, learnt from the following document, perfect document !!!! http://www.virtuousprogrammer.com/?s=robot Test Automation with Robot Framework Here's the content of the "SimpleTest.txt" *** Settings *** Library Selenium Library *** Testc