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更新===============================

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/50096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows:批处理脚本学习

目录 一、第一个批处理文件 1. &&和 | | 2. | 和 & 二、变量 1.传参变量%name 2.初始化变量set命令 3.变量的使用 4.局部变量与全局变量 5.使用环境变量 6.扩充变量语法 三、注释REM和 &#xff1a;&#xff1a; 四&#xff1a;函数 1.定义函数 2.…

力扣984.不含AAA或BBB的字符串

力扣984.不含AAA或BBB的字符串 贪心 如下 class Solution {public:string strWithout3a3b(int a, int b) {string res;while(a > b && b > 0){res "aab";a--,a--;b--;}while(b > a && a > 0){res "bba";b--,b--;a--;}whi…

js 习题 1

文章目录 前言T1T2T3T4T5T6T7T8T9结语 前言 『最孤独的人最亲切&#xff0c;受过伤的人总是笑的最灿烂。』—— 「素媛」 T1 let buf""; process.stdin.on("readable",function(){let chunkprocess.stdin.read();if(chunk){bufchunk.toString();} });pr…

Python3网络爬虫开发实战(2)爬虫基础库

文章目录 一、urllib1. urlparse 实现 URL 的识别和分段2. urlunparse 用于构造 URL3. urljoin 用于两个链接的拼接4. urlencode 将 params 字典序列化为 params 字符串5. parse_qs 和 parse_qsl 用于将 params 字符串反序列化为 params 字典或列表6. quote 和 unquote 对 URL的…

GIS前沿技术

无论是初步接触到GIS的学生&#xff0c;还是对GIS已经有一定的了解的从业者&#xff0c;肯定都非常关心两个问题&#xff1a;GIS有没有发展前景&#xff0c;GIS有哪些应用价值&#xff1f; 关于这两个问题&#xff0c;笔者的答案是GIS作为一门融合了空间数据采集、存储、处理、…

【数据结构】堆,优先级队列

目录 堆堆的性质大根堆的模拟实现接口实现构造方法建堆入堆判满删除判空获取堆顶元素 Java中的PriorityQueue实现的接口构造方法常用方法PriorityQueue注意事项 练习 堆 如果有一个集合K {k0&#xff0c;k1&#xff0c; k2&#xff0c;…&#xff0c;kn-1}&#xff0c;把它的…

Listen(sockfd,backlog)监听函数的第二个参数到底是什么?深度解释

listen队列剖析 int listen(int sockfd,int backlog) backlog : 监听套接字队列 对于一个调用监听的套接字&#xff0c;系统会维护给这个套接字两个队列 1. 未完成连接队列 //当客户端发生三次握手的第一次syn包给服务器的时候&#xff0c;服务器就会再未完成队列中创建…

深入探索 Postman:使用 API 性能测试优化你的 Web 服务

引言 在当今快速发展的互联网时代&#xff0c;Web 服务的性能至关重要。API 作为服务之间的桥梁&#xff0c;其性能直接影响到整个应用的响应速度和用户体验。Postman&#xff0c;作为一个多功能的 API 开发工具&#xff0c;提供了强大的性能测试功能&#xff0c;帮助开发者评…

2024第29届郑州全国商品交易会

第29届郑州全国商品交易会 2024第四届餐饮与供应链专题展 邀 请 函郑州全国商品交易会&#xff08;简称郑交会&#xff09;是全国大型性经贸活动&#xff0c;一直秉承“政府指导&#xff0c;市场化运作”的模式&#xff0c;自1995年以来已成功举办了二十八届&#xff0c;是国内…

【java】BIO,NIO,多路IO复用,AIO

在Java中&#xff0c;处理I/O操作的模型主要有四种&#xff1a;阻塞I/O (BIO), 非阻塞I/O (NIO), 异步I/O (AIO), 以及IO多路复用。下面详细介绍这四种I/O模型的工作原理和应用场景。 1. 阻塞I/O (BIO) 工作原理 阻塞I/O是最传统的I/O模型。在这种模型中&#xff0c;当一个线…

CSS 自适应图片根据 div 大小进行均匀填充

目录 前言使用 object-fit 属性示例代码 HTMLCSS 总结相关阅读 1. 前言 在Web开发中&#xff0c;经常需要图片根据其容器的大小进行自适应填充&#xff0c;使得图片在任何设备和屏幕尺寸下都能保持良好的显示效果。本文将介绍如何使用CSS中的 object-fit 属性来实现这一需求…

安装caffe-CPU版本并进行训练

目录 前言 0、安装Ubuntu 18.04 版本 输入ls没有反应 ubuntu换源 换源出现的问题 1、安装caffe出现E:Unable to locate package caffe-cpu问题 2、把 code 文件夹下载到 ubuntu 3、在本地使用caffe-CPU&#xff0c;并部署数据标注工具 ATool 问题1 问题2 问题3 命令行…

vector(STL)

文章目录 定义访问函数.push_back().pop_back()insert():erase(): 定义 vector<typename> name;typename是类型名 访问 1.定义为vector v 的vector容器&#xff0c;可以使用 v[0]、v[1]、v[2]…这种方式来访问。 但不能这样赋值比如v[0]10&#xff0c;这样是不行的 2.…

leedcode-数组-15 最接近的三数之和

原理 1、对数组进行升序排列&#xff1b; 2、定义变量_min&#xff0c;初始值是升序后数组的前3个元素之和&#xff0c;默认当前3个数之和离目标值最近&#xff1b; 3、遍历数组&#xff1b; 4、定义首指针为start&#xff0c;表示当前遍历元素的下一个元素&#xff0c;即i…

URL过滤、DNS过滤和内容过滤的总结

目录 URL过滤 URL和URI URL -- 统一资源定位符 URI --- 统一资源的标识符 URL和URI之间的区别 URL过滤的方式 HTTP协议获取URL的方式 HTTP协议做控制管理的流程 HTTPS协议做控制管理的流程 1&#xff0c;配置SSL的解密功能 2&#xff0c;直接针对加密流量进行过滤 例…

svelte - 1. 基础知识

svelte中文官网 vue和svelt语法对比 掘金-svelte入门简介 文章目录 1、基本页面框架2、动态属性3、嵌套组件4、@html: 插入html标签,显示真实dom元素5、点击事件 on:click={handleClick}6、响应式声明7、父子组件通信8、if-else(1)if(2)if - else(3)if - else if - else…

解决 Shiro 重复调用 doGetAuthenticationInfo 导致异常处理错误的问题

遇到一个 Shiro 中反复调用 doGetAuthenticationInfo 导致异常没有被成功处理的问题&#xff0c;经过一些源码调试&#xff0c;发现了问题的所在&#xff0c;只需在继承 BasicHttpAuthenticationFilter 的类中重写 onAccessDenied 方法即可。 文章目录 1.问题环境2.问题描述3.问…

kubectl命令收集

#查看node节点的IP信息&#xff1a; kubectl get nodes -o wide PV是一个抽象的存储资源&#xff0c;它定义了存储的类型、大小和访问模式&#xff0c;而不包含节点的具体信息。 要查看PV所在节点的IP地址&#xff0c;您可以通过PV所绑定的PVC来查找绑定了PV的Pod&#xff0c…

2024-07-23 Unity AI行为树2 —— 项目介绍

文章目录 1 项目介绍2 AI 代码介绍2.1 BTBaseNode / BTControlNode2.2 动作/条件节点2.3 选择 / 顺序节点 3 怪物实现4 其他功能5 UML 类图 项目借鉴 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 项目介绍 ​ 本项目使用 Unity 2022.3.32f1c1&#xff0c;实现基…

mysql.connector库

mysql-connector-python 和 PyMySQL的区别 mysql-connector-python 和 PyMySQL 都是 Python 语言中用于连接和操作 MySQL 数据库的库。它们之间有一些关键的区别&#xff1a; 起源和兼容性&#xff1a; mysql-connector-python 是 MySQL 官方提供的连接器&#xff0c;完全支持…