当前位置: 首页 > news >正文

robotframework语法易错点总结(更新中...)

1.列表使用@还是$

1、若想把列表用Set Global Variable设置全局变量时,必须用@,当使$设置全局变量时为字符串。

    Set Global Variable    ${name}    Jack
    Set Global Variable    @{animals}    cat    monkey    duck    dog
 

2、使用FOR循环遍历列表时,必须使用@ 

    @{animals}    Create List    cat    monkey    duck    dog

使用 Create List创建列表时,使用@还是$都可以。
    :FOR    ${a}    IN    @{animals}
    \    Log    ---${a}---

会打印

---cat---
---monkey---
---duck---
---dog---


    :FOR    ${a}    IN    ${animals}
    \    Log    ---${a}---

会打印

---[u'cat', u'monkey', u'duck', u'dog']---
 

很明显,FOR循环中使用@遍历animals时,会一一遍历animals中的每一项,但FOR循环中使用$遍历animals时,会把animals当做一个整体打印输出。

3、列表作为关键字入参时,一定要统一形参和实参的形式,要么形参使用@,实参传递@,要么形参使用$,实参传递$,建议统一使用$,因为传递@会涉及拆解包的问题。

*** Keywords ***

计算数字之和
    [Arguments]    @{numbers}
    ${sum}    Set Variable    0
    : FOR    ${i}    IN    @{numbers}
    \    ${sum}    Evaluate    ${sum}+${i}
    \    Log    ${sum}

*** Test Cases ***

case01

    ${nums}    Create List    1    2    3    4
    计算数字之和    @{nums}

*** Keywords ***

计算数字之和
    [Arguments]    ${numbers}
    ${sum}    Set Variable    0
    : FOR    ${i}    IN    @{numbers}
    \    ${sum}    Evaluate    ${sum}+${i}
    \    Log    ${sum}

*** Test Cases ***

case01

    ${nums}    Create List    1    2    3    4
    计算数字之和    ${nums}

2.Comment    PAUSE只能在robotframework的ide环境即RIDE中有效,如果用robot命令行的方式执行用例,Comment    PAUSE无效。

3. 变量    Run Keyword If    条件    关键字1    ELSE    关键字2

条件成立时,运行关键字1,并把关键字1的返回值赋予变量;条件不成立时,运行关键字2,并把关键字2点返回值赋予变量。

${month}    Set Variable    1

: FOR    ${i}    IN RANGE    16
\    ${month}    Run Keyword If    ${i}>11    Evaluate    ${month}%12
\    ...    ELSE    Set Variable    ${month}

特别注意,当没有ELSE分支的时候,当条件不满足时,${month}会为None,而不是为1。

4.变量    Set Variable If    条件    值1    值2

条件成立时,变量为值1;条件不成立时,变量为值2。

${year}    Set Variable    2021   

: FOR    ${i}    IN RANGE    16
\    ${year}    Set Variable If    ${i}>11    2022    ${year}

特别注意,当没有为条件不满足时的${year}设置默认值时(${year}),${year}为None,而不是为2021。

5.在对字符串用in或not in进行关系判断时,报错SyntaxError: EOL while scanning string literal (<string>, line 1)

case003
    ${out}    Evaluate    os.popen('ifconfig lo').read()    modules=os
    Log    ----${out}----
    Run Keyword If    '127.0.0.1' in '${out}'    Log    YES
    ...    ELSE    Log    NO

Evaluating expression ''127.0.0.1' in 'lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 16384
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 181175  bytes 264236464 (251.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 181175  bytes 264236464 (251.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

'' failed: SyntaxError: EOL while scanning string literal (<string>, line 1)

 这是换行符导致的,替换掉换行符,或者将多行字符串按行进行处理

case003
    ${out}    Evaluate    os.popen('ifconfig lo').read()    modules=os
    Log    ----${out}----
    ${out}    Replace String    ${out}    ${\n}    ${EMPTY}
    Log    ----${out}----
    Run Keyword If    '127.0.0.1' in '${out}'    Log    YES
    ...    ELSE    Log    NO

6.*** Variables ***中设置的变量的作用域问题

在*** Variables ***中设置的变量为全局变量,并且可以在Suite Setup和Test Setup直接引用,也就是说,*** Variables ***中设置的变量生效时间要先于测试套件和测试用例中的Setup。

========================以上,2024-07-22更新===============================

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 代码审计 | .NET SqlSugar框架注入漏洞
  • Java 哈希表
  • 如何在Linux上使用Ansible自动化部署
  • NOI大纲——普及组——素数筛法
  • CentOS搭建Apache服务器
  • 【深度学习】yolov8-det目标检测训练,拼接图的分割复原
  • 网络安全防御【IPsec VPN搭建】
  • 环信+亚马逊云科技服务:助力出海AI社交应用扬帆起航
  • Python3网络爬虫开发实战(3)网页数据的解析提取
  • SSIS_SQLITE
  • 【数据结构--查找】
  • 【反证法】932. 漂亮数组
  • 使用php adodb5连接人大金仓数据库
  • 揭秘Django与Neo4j:构建智能知识图谱的终极指南
  • Adam 和 RMSprop优化算法
  • 2019.2.20 c++ 知识梳理
  • Date型的使用
  • java8-模拟hadoop
  • JavaScript-Array类型
  • JavaScript新鲜事·第5期
  • Java方法详解
  • JS函数式编程 数组部分风格 ES6版
  • Laravel Mix运行时关于es2015报错解决方案
  • PAT A1120
  • react 代码优化(一) ——事件处理
  • Redis的resp协议
  • SQL 难点解决:记录的引用
  • 分类模型——Logistics Regression
  • 回顾 Swift 多平台移植进度 #2
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 面试遇到的一些题
  • 前端面试总结(at, md)
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 数据仓库的几种建模方法
  • 微信公众号开发小记——5.python微信红包
  • #单片机(TB6600驱动42步进电机)
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (1)(1.9) MSP (version 4.2)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (windows2012共享文件夹和防火墙设置
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (函数)颠倒字符串顺序(C语言)
  • (四)Android布局类型(线性布局LinearLayout)
  • (学习日记)2024.02.29:UCOSIII第二节
  • (学习总结16)C++模版2
  • (转)C#调用WebService 基础
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)平衡树
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .Net--CLS,CTS,CLI,BCL,FCL