Evaluate用法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Evaluate⽤法
这⼀讲我们重点来介绍⼀下⼀个常⽤的关键字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]
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]
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来实现吧。

希望本篇对⼤家有所帮助。

相关文档
最新文档