转自: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行的代码:

  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行的代码:

  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来实现吧。希望本篇对大家有所帮助。

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

  1. Robot Framework(10)- 使用资源文件

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 啥是资源文件 资 ...

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

    最近一直在用robot framework 做自动化测试项目,老实说对于习惯直接使用python的情况下,被框在这个工具里各种不爽,当然,使用工具的好处也很多,降低了使用成本与难度:当然,在享受工具带 ...

  3. Robot Framework学习笔记(三)------常用关键字介绍

    下面关键字全部由 Builtin 库提供,Builtin 为 Robot Framework 标准类库.Builtin库提供常用的关键字 1.log log 关键字就是编程语言里的"prin ...

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

    1.1  Builti标准类库 在学习一门编程语言的时候,大多教材都是从打印“hello world”开始.我们可以像编程语言一样来学习Robot Framework.虽然通过RIDE 提供“填表”一 ...

  5. 使用Robot Framework做接口测试

    http://chuansong.me/n/1858477 1.RF框架 1.1 RF框架介绍Robot Framework 框架是一个通用的测试框架,一直是由诺西网络(Nokia Siemens N ...

  6. robot framework学习笔记2

    声明:本笔记都只是自己根据大牛虫师的robot系列文档学习记录的,学习的话还请移步虫师博客:https://www.cnblogs.com/fnng/ 非常感谢大牛的分享,带小白一步一步入门   F5 ...

  7. Robot Framework常用关键字介绍

    常用关键字介绍 在学习一门编程语言的时候,大多教材都是从打印“hello world”开始.我们可以像编程语言一样来学习 Robot Framework.虽然通过 RIDE 提供“填表”一样的写测试用 ...

  8. Robot Framework操作

    Robot Framework 介绍 RobotFramework是一款基于python的开源自动化测试框架,遵守Apache License 2.0协议,在此协议下所有人都可以免费开发和使用.因为R ...

  9. Robot Framework常用关键字

    虽然通过RIDE提供"填表"一样的写测试用例的方式.但它却支持强大的关键字功能,以及可以开发关键字的扩展能力. Comment 注释功能,也可以使用python中的"#& ...

  10. robot framework 常用关键字介绍

    1.log 打印所有内容 log hello word 2.定义变量 ${a} Set variable 92 log ${a}   3.连接对象 ${a} Catenate hello word l ...

随机推荐

  1. NSMutableURLRequest和NSURLConnection用Post方式上传照

    需求:上传一张照片和内容,内容包括:用户编辑的内容.经纬度.地点等等,就是类似发一个说说.这就是一个很平常的功能,实现的方式想必各位能想到很多. 接下来我想用系统的NSURLConnection来实现 ...

  2. 【BZOJ 3150】新Nim游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=3105 并不会QwQ 为什么贪心是正确的. 向小神请教了一个弱智问题(小神好神啊OTZ) 然后就写了一 ...

  3. 【ASP.NET Identity系列教程(三)】Identity高级技术

    注:本文是[ASP.NET Identity系列教程]的第三篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序 ...

  4. ES6新特性:利用解构赋值 (destructuring assignment), 简化代码

    本文的Demo的运行环境为nodeJS, 参考:让nodeJS支持ES6的词法----babel的安装和使用 : 解构赋值是一种表达式, 利用这种新语法, 可以直接从数组或者对象中快速提取值 赋值给不 ...

  5. eclipse-搭建maven的war项目集合spring注解方式

    工具:eclipse 4.4.2 版本号:20150219-0600 jdk:1.7 1.下图创建maven工程,然后next 下图选择工程保存位置(这里选择默认),next 下图选择webapp项目 ...

  6. js学习笔记5----函数传参

    构建函数的原则: 1) 尽量保持HTML结构一致: 2) 把核心主程序实现,用函数包起来: 3) 把每组里不同的值找出来,通过传参实现.

  7. log4net在Asp.net Mvc中的应用配置与介绍

    log4net在.NET中的地位就不多言语了,此篇文章着重配置.较少介绍使用.因为在网上你可以在网上搜到几十万的文章告诉你怎么用.安装的话也不废话了,很简单.Nuget里搜索一下"log4n ...

  8. c# 导入导出Excel

    1.引用两个js Codaxy.Xlio.dllCodaxy.Xlio.XmlSerializers.dll 2.导出 public string EntityListToExcel(string p ...

  9. BZOJ2301 [HAOI2011]Problem b

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  10. CruiseControl.NET配置文件(生产环境版本,与SVN结合自动部署)

    配置如下: 说明:此配置文件的功能是当有SVN修改时,会自动触发并编译发布,间隔为10秒. 由于配置文件上面有注释,如果提示节点配置错误,请删除这些注释. 官方详细节点配置说明:http://www. ...