在对批量测试用例进行测试的时候,往往会不知道这个用例到底执行多久结束。绝大多数情况下,含有某个关键词的日志打印出来可以对应着某个用例的流程结束。

如果用“sleep ns”方法等待执行结束,我们不得不采用放大执行时间的方法来保障在机器比较卡的时候也能执行完流程。如果可以实时监测结果日志是否出现,便可以大大降低批量测试用例实行的总时间。robot framework测试工具可以使用Wait Until Keyword Succeeds关键字实现我们的需要。

语法:Wait Until Keyword Succeeds| timeout, retry_interval, name, *args

解释:等到指定的关键字成功或给定的超时过期。| timeout 表示超时 | retry_interval 表示重新操作的间隔  时间 | name表示要等待的关键字名称 | *args 表示所需等待加载的locator

举例

假如在执行主目录下面的log/msrp.log里出现关键字${init_succ}则用例执行成功。可以先在相应的\library\KeywordsOfSth.py 设计函数searchkeywordsinremotelog(核心思想是在主目录执行”grep -o 表示成功的关键字符 ~/log/日志文件名| wc -l”,并取出执行结果判断是否不为0),再在\resource\自定义关键字.txt里定义关键字“日志关键字验证”并与函数searchkeywordsinremotelog建立关联。

测试用例里使用如下格式即可实现每1秒钟到机器上的/log/msrp.log中查找一次${init_succ}与${msrp_listen_succ} ,若查到则用例执行成功。若查找10秒后仍未查到,则用例执行失败。

Wait Until Keyword Succeeds    10s    1s    日志关键字验证    ${ipaddress}    ${user}    ${pswd}   ${init_succ},${msrp_listen_succ}    msrp.log

测试截图如下,在该测试中,从开始使用Wait Until Keyword Succeeds 后第四次查找找到了关键词,用例执行成功。

附相关修改:

Keyword目录添加以下内容:

*** Variables ***

${init_succ}      MSRPInitSucc     # MSRP初始化成功

${msrp_listen_succ}    tcpServerRegProc--listen succ     # MSRP侦听成功

自定义关键字.txt添加以下内容:

日志关键字验证

[Arguments]    ${hostip}    ${username}    ${password}    ${keywords}    ${logname}

[Documentation]    说明:使用ssh连接到服务器上,从指定日志文件中搜索关键字

...    ${hostip}:要搜索文件的服务器IP地址|

...    ${username}:要搜索文件所在的用户名|

...    ${password}: 要搜索文件所在用户的密码|

...    ${keywords}:要搜索日志里的关键词

...    ${logname}:要搜索文件在服务器上的日志名称,如msrp.log

${result}    searchkeywordsinremotelog    ${hostip}    ${username}    ${password}    ${keywords}    ${logname}

ShouldBeTrue     ${result}

\library\KeywordsOfSth.py设计以下函数:

def searchkeywordsinremotelog(self,host,username,password,keyword,logname):
        transport = paramiko.Transport((host, 22))
        transport.connect(username=username, password=password)
        ssh = paramiko.SSHClient()
        ssh._transport = transport
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        data = re.split(",",keyword)
        print('keyword:',data)
        for i in data:
            print("search element:",i)
            searchstring = 'ls -al ~/log|grep ' + logname + ' |grep -F ' + i +' ~/log/' + logname + '| wc -l'
            stdin, stdout, stderr = ssh.exec_command(searchstring)
            searchresult = stdout.read()
            searchresult=searchresult.rstrip("\n")
            print("search result:",searchresult)
            if '0' == searchresult :
               return False
        ssh.close()
        return True

警示:python代码修改时一定要注意格式 !!!

Robot Framework自动化测试用具 Wait Until Keyword Succeeds关键字使用案例相关推荐

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

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

  2. Jenkins上配置Robot Framework自动化测试脚本工程

    Jenkins上配置Robot Framework自动化测试脚本工程 现在越来越多的项目组开始引入敏捷,其中对于我们的自动化测试也有了一些新的要求.至少要把我们做的自动化案例能够持续地跑起来,能够在敏 ...

  3. Robot Framework 自动化测试框架核心指南-初识Robot Framework(学习笔记2)

    初识Robot Framework 1.1如何创建一个自动化测试项目 1.1.2 创建测试套件 1.1.3 创建测试用例 1.2 Robot Framework基础关键字 1.2.1 如何搜索Robo ...

  4. Robot Framework自动化测试框架核心指南-如何使用Java编写自定义的RobotFramework Lib

    如何使用Java编写自定义的RobotFramework Lib 本文包括2个章节 1. Robot Frdamwork中如何调用java Lib库 2.使用 java编写自定义的Lib 本文作者为: ...

  5. Robot Framework自动化测试教程-通过RIDE创建工程、测试套、测试用例、测试资源、变量文件,引入测试库

    1. 创建测试工程 RIDE工具中有Project概念,实际上Robot Framework中是没有工程的概念,可以理解为最顶层的测试套. 1.1. 新建测试工程 点击 File–>New Pr ...

  6. Robot Framework自动化测试(二)---元素定位

    不要误认为Robot framework 只是个web UI测试工具,更正确的理解Robot framework是个测试框架,之所以可以拿来做web UI层的自动化是国为我们加入了selenium2的 ...

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

    robotremoteserver 是什么? Python Remote Server for Robot Framework 下载地址:https://pypi.python.org/pypi/ro ...

  8. Robot Framework自动化测试解决selenium2library加载失败

    =======所需环境=================== Python: https://www.python.org/ RF框架是基于python 的,所以一定要有python环境. Robot ...

  9. Robot Framework自动化测试(一)--- 安装

    所需环境: 1.python 2.robotframework https://pypi.python.org/pypi/robotframework/2.8.5#downloads 3.wxPyth ...

  10. 火影推荐程序连载23-Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计

    自动化测试如果需要能高效快速的支撑软件项目的测试,项目的快速迭代以及上线,除了以上我们介绍的需要许多的Lib来支持以及需要高效的去编写自动化测试案例外,还需要一个好的自动化测试框架平台来支撑我们的自动 ...

最新文章

  1. crnn自编码网络(类似递归)
  2. python36块砖36人搬算法_剑指offer python实现 66道算法题
  3. const深度总结(effective C++)
  4. hdu - 1827 Summer Holiday (强连通)
  5. java异常处理试题答案_JAVA异常处理试题及答案
  6. SAP License:PO中“最终发票”的应用与理解
  7. php 冷门与常用函数
  8. w ndows安装程序无法将,windows安装程序无法将windows配置在硬件上运行
  9. 互联网之于人类社会进化的意义
  10. iOS GitHub上常用第三方框架
  11. 详解pandas编码函数pd.factorize()
  12. linux下上传系统中文件到gitHub
  13. Python自学笔记1(think python)
  14. 如何成为一名优秀的程序员(三)
  15. MYSQL 2059问题的解决
  16. 2011腾讯海笔 大概题型(欢迎讨论)
  17. 交换机的116个知识点 (1)
  18. 四川省阿坝藏族羌族自治州谷歌高清卫星地图下载
  19. MFC 右下角弹窗显示关闭实例
  20. wed语言翻译HTML及使用规范,Web前端开发规范

热门文章

  1. 怎样查看 iPhone 基带版本号
  2. linux下Umail服务的停止
  3. STC12C5A60S2自带A/D转换器的使用
  4. 中国顶级CEO经典语录
  5. Master 2S无线鼠标信号干扰问题
  6. 【干货】JavaScript 资源大全
  7. 微信小程序实现类似微信提现、支付宝提现充值等 “自定义键盘“可实现自定义右下角搜索内容,手写input功能view组件,实现焦点获取事件
  8. PCBA水洗流程和工艺原理
  9. Redis 缓存清理策略
  10. BUG记录:org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is no