转自: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. 跨域http请求

    <?php header("Access-Control-Allow-Origin: *"); header("Content-Type: application/ ...

  2. Jquery-pagination.js分页处理

    首先提供pagination.js的插件源码 /** * This jQuery plugin displays pagination links inside the selected elemen ...

  3. asp.net mvc 依赖缓存启动项配置

    msdn 参考地址:https://msdn.microsoft.com/zh-cn/library/ms229862 4.5 第一步:32bit%windir%\Microsoft.NET\Fram ...

  4. UML类图中的六种关系及实例

    前言: 设计模式是一种对于面向对象语言(C#,C++,Java)的高级应用.其思维体现出的是真正的代码设计.每一种模式都堪称巧妙!但基于各种设计模式,这里少不了基本的类图设计,本文简要列出6种关系,及 ...

  5. 用 perl 统计 fasta 文件序列的总长

    #!/usr/bin/perl -w use strict; die "Usage: $0 <file>\n" unless (@ARGV == 1); my $lin ...

  6. 【codevs1043】 方格取数

    http://codevs.cn/problem/1043/ (题目链接) 题意 N*N的方格,每个格子中有一个数,寻找从(1,1)走到(N,N)的两条路径,使得取到的数的和最大. Solution ...

  7. [Noi2016十连测第三场]线段树

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  8. 硬盘分区时GPT和MBR的区别/选择

    最明显的区别是MBR最大支持2T的硬盘,而GPT则更大. 1.最先出现在Windows8中设置新磁盘,系统会询问你是想要使用MBR还是GPT分区,GPT是一种新的硬盘分区标准.GPT带来了很多新特性, ...

  9. Android程序设计-简单手机通讯录

    在微信中,手机QQ中你会发现软件读取手机通讯录这个功能,这个功能使得软件更好的与手机联系人绑定,从而达到分享,拨打电话,读取用户信息等操作.下面我们将通过一个demo实现这个功能 首先我们看一下效果图 ...

  10. A.Kaw矩阵代数初步学习笔记 8. Gauss-Seidel Method

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...