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

RobotFramework框架基本功能语法

关键字

Log

Log关键字相当于Python的print函数;

*** Test Cases ***test_oneLog    hello world

发现在pycharm控制台中没有打印hello world,调试的时候不方便;

解决方法一:

设置Log级别为Warn

*** Test Cases ***test_oneLog    hello world    level=Warn

解决方法二:

使用Log To Console关键字

*** Test Cases ***test_oneLog To Console    hello world

定义变量

普通变量

Set Variable 

*** Test Cases ***test_one${name}    Set Variable    张三Log To Console    ${name}

相当于python代码

name = "张三"
print(name)

查看关键字的使用说明

鼠标悬停到这个关键字(方式1)

点击进去查看源码的注释说明(方式2)

列表变量

定义列表变量

*** Test Cases ***test_one${name_list}    Create List    张三      李四    王五Log To Console    ${name_list}

相当于python代码

name_list = ['张三', '李四', '王五']
print(name_list)

遍历列表1

*** Test Cases ***test_one${name_list}    Create List    张三      李四    王五FOR    ${name}    IN    @{name_list}Log To Console    ${name}END

或者使用@

*** Test Cases ***test_one@{name_list}    Create List    张三      李四    王五FOR    ${name}    IN    @{name_list}Log To Console    ${name}END

相当于python代码

name_list = ['张三', '李四', '王五']
for name in name_list:print(name)

@{name_list} 中 @ 符号的作用

1. 变量类型标识
@ 符号用于标识列表变量(List Variable)
区分不同类型的变量:$ 用于标量,@ 用于列表,& 用于字典2. 列表展开语法
@{name_list} 会将 name_list 列表中的元素逐个展开
在循环中使用时,FOR ${name} IN @{name_list} 会依次取出列表中的每个元素3. 使用场景对比
# 不使用 @ 符号 - 获取整个列表对象
${list_var}    Create List    张三    李四    王五
Log    ${list_var}    # 输出: ['张三', '李四', '王五']# 使用 @ 符号 - 展开列表元素
FOR    ${name}    IN    @{name_list}Log    ${name}    # 分别输出: 张三, 李四, 王五
END
4. 关键区别
${name_list} - 引用整个列表对象
@{name_list} - 展开列表中的各个元素,用于迭代操作

遍历列表2

*** Test Cases ***test_one${name_list}    Create List    张三    李四    王五FOR    ${index}    ${name}    IN ENUMERATE    @{name_list}Log To Console    索引:${index} 姓名:${name}END

相当于python代码

name_list = ['张三', '李四', '王五']
for index, name in enumerate(name_list):print(index,name)

字典变量

定义字典变量

*** Test Cases ***test_one${person_dic}    Create Dictionary    name=张三    age=18Log To Console    ${person_dic}

或者使用&符合,打印用Log Many

*** Test Cases ***test_one&{person_dic}    Create Dictionary    name=张三    age=18Log Many        &{person_dic}

相当于python代码

person_dic = {"name": "张三", "age": 18}
print(person_dic)

获取字典所有的key

*** Settings ***
Library    Collections
*** Test Cases ***test_one${person_dic}    Create Dictionary    name=张三    age=18#获取字典所有的key${keys}    Get Dictionary Keys    ${person_dic}Log To Console    ${keys}

打印:['age', 'name']

相当于python代码

person_dic = {"name": "张三", "age": 18}
keys_list = list(person_dic.keys())
print(keys_list)  # ['name', 'age']

获取字典所有的value

*** Settings ***
Library    Collections
*** Test Cases ***test_one${person_dic}    Create Dictionary    name=张三    age=18#获取字典所有的key${values}    Get Dictionary Values    ${person_dic}Log To Console    ${values}

打印:['18', '张三']

相当于python代码

person_dic = {"name": "张三", "age": 18}
values_list = list(person_dic.values())
print(values_list)  # ['张三', 18]
获取字典的items(键值对)
*** Settings ***
Library    Collections
*** Test Cases ***test_one${person_dic}    Create Dictionary    name=张三    age=18# 获取字典的items(键值对)${items}    Get Dictionary Items    ${person_dic}Log To Console    ${items}

根据key获取value

*** Settings ***
Library    Collections
*** Test Cases ***test_one${person_dic}    Create Dictionary    name=张三    age=18Log To Console    ${person_dic}[name]

相当于python代码

person_dic = {"name": "张三", "age": 18}
name = person_dic.get("name")
print(name)

遍历字典的键值对

注意遍历使使用的是&符号

*** Settings ***
Library    Collections
*** Test Cases ***test_one${person_dic}    Create Dictionary    name=张三    age=18# 遍历字典的键值对FOR    ${key}    ${value}    IN    &{person_dic}Log To Console    ${key} = ${value}END

相当于python代码

person_dic = {"name": "张三", "age": 18}
for key, value in person_dic.items():print(f"{key}: {value}")
# 输出:
# name: 张三
# age: 18

流程控制

IF条件控制

*** Test Cases ***test_one${score}    Set Variable    70Run Keyword If    ${score} >= 80    Log To Console    优秀...    ELSE IF    ${score} >= 60    Log To Console    及格...    ELSE    Log To Console    不及格

使用 IF 语句块(推荐,适用于较新版本的 Robot Framework)

*** Test Cases ***test_one${score}    Set Variable    70IF    ${score} >= 80Log To Console    优秀ELSE IF    ${score} >= 60Log To Console    及格ELSELog To Console    不及格END

for循环

FOR开始EDN结束

*** Settings ***
Library    Collections
*** Test Cases ***test_one${person_dic}    Create Dictionary    name=张三    age=18# 遍历字典的键值对FOR    ${key}    ${value}    IN    &{person_dic}Log To Console    ${key} = ${value}END
*** Settings ***
Library    Collections
*** Test Cases ***test_one${person_dic}    Create Dictionary    name=张三    age=18# 遍历字典的键值对FOR    ${key}    ${value}    IN    &{person_dic}Run Keyword If    '${key}' == 'name'    Log To Console    ${value}...    ELSE    Log To Console    岁数为:${value}END
*** Settings ***
Library    Collections
*** Test Cases ***test_one${person_dic}    Create Dictionary    name=张三    age=18# 遍历字典的键值对FOR    ${key}    ${value}    IN    &{person_dic}IF    '${key}' == 'name'Log To Console    ${value}ELSELog To Console    岁数为:${value}ENDEND

调用python方法

普通函数方法

add.py

def get_sum(a, b):return int(a) + int(b)

demo.robot

第一步导入add.py文件,第二步get_sum函数,变成关键字Get Sum(规则首字母大写,下划线_变成空格)

*** Settings ***
Library    add.py
*** Test Cases ***test_one${result}    Get Sum    1    2Log To Console    ${result}

class类方法

py 文件要按照Robot Framework的要求定义可识别的关键字函数

UIauto.py
class UIauto:def get_info(self, name, age):return name + age

注意:类名和py名要保持一致

demo.robot

*** Settings ***
Library    UIauto.py
*** Test Cases ***test_one${result}    Get Info    张三    18Log To Console    ${result}

http://www.dtcms.com/a/596522.html

相关文章:

  • 120. 三角形最小路径和
  • Redis(116)Redis的内存管理如何实现?
  • 如何通过中药饮片采购平台实现安全高效的全链路供应链建立?
  • 兴县做网站的公司wordpress登陆改图标和连接
  • CSV的读写
  • 【讨论】VR + 具身智能 + 人形机器人:通往现实世界的智能接口
  • android studio 里的 activity 和 layout 是怎么关联上的
  • 临桂区建设局网站北京seo做排名
  • 东阳建设局网站自适应网站建设多少钱
  • UI创作思想总结
  • 4、Python3.11新特性
  • Java-Spring入门指南(二十九)Android交互核心:按钮点击事件与Activity跳转实战
  • 云手机的两大核心技术
  • Postman VS swagger VS PostIn,接口管理工具选型指南
  • 【大数据技术05】数据加工
  • es 书籍检索-上篇
  • Electron 智能文件分析器开发实战适配鸿蒙
  • 鸿蒙文件操作
  • 手工做环保衣的网站湖北省工程建设信息官方网站
  • ShellCrash 安装与配置踩坑与解决日志
  • redis 的面试点总结
  • DS1302 简单介绍
  • JS DOM 操作与性能优化实战指南:构建高效可交互的页面结构
  • 【Java】基于策略模式 + 工厂模式多设计模式下:重构租房系统核心之城市房源列表缓存与高性能筛选
  • 学校门户网站作用收录查询工具
  • 如何在资源不足时快速补救项目延误
  • C++多线程之线程管控
  • 企业BI项目建设--如何梳理企业的指标体系
  • Linux 虚拟文件系统(VFS)深度解析
  • 系统思考:aAI产业链的啤酒游戏