robotframework+python接口自动化的点滴记录

news2025/2/13 5:08:34

在robotframework+python框架上写了两三天的接口自动化,做了一些笔记。

1.在断言的时候经常由于数据类型导致较验不通过,值得注意的是,在定义常量或者变量的时候,使用${}代表int类型,例如${2}就代表数字2,另一种直接写2,则是string类型的2,返回的时候会是“2”。

2.由于接口response中会出现字典格式,那在写期望值的时候,就要把一些字段拼成字典的形式,可以使用create dictionary这个基础关键字,写法是:

${expectResult}=  create dictionary  guideType  ${guideType}    options   ${options}   questionId   ${1}   questionName  ${questionName}

3.当接口需要测试几次,只是参数改变的时候,需要用到for循环,这里我用的是for-in-zip,例如:
参数定义在参数文件里
@{questionId} ${1}  ${2}  ${4}  ${6}  ${8}
@{optionId}    ${1}  ${2}  ${9}  ${13} ${18}
用例中写:
:FOR   ${questionId}  ${optionId}  IN ZIP   ${questionId}  ${optionId}
要测试的内容,for里要执行的语句前面都要写
4.还用了一种普通的for循环,写法如下:
:FOR    ${questionId} ${optionId}  IN
...    ${1}    ${1}
...    ${2}    ${2}
...    ${4}    ${9}
...    ${6}    ${13}
...    ${8}    ${18}
5. 嵌套FOR循环的写法:
:FOR  ${questionIdRange}  ${content}  IN ZIP  ${questionIdRange}  ${content}
    ${options}=   get options by question id with false   ${questionIdRange}
    内嵌FOR生成完整option  @{options}
    ${question}=  create dictionary  content  ${content}  options  ${options} 
*** Keywords ***
内嵌FOR生成完整option
[Arguments]    @{LIST}
: FOR   ${item}    IN   @{LIST}
       ${item}=    blablablabla
这里会把子循环里得到的list传到主循环的options里,主要看如何内嵌,忽略业务代码部分。

1.在循环体内,赋值语句的前后名称不能一样,否则在跑循环的第二次时就会报错:TypeError: not all arguments converted during string formatting

这样写是错的:

${设置计划接口_请求body}=  string format  ${设置计划接口_请求body}  ${cardId}  ${fundCode}  ${investmentPeriod}

这样写是对的:

${设置计划接口_请求body-new}=  string format  ${设置计划接口_请求body}  ${cardId}  ${fundCode}  ${investmentPeriod}

2.在循环体内,每次循环取值不一样的参数,则需要在body的时候使用%s,然后在用例中进行替换。

Body的写法:

*** Variables ***

${设置计划接口_请求body}

                    ...            {

                    ...                     "amount"   : "${amount}",

                    ...                     "cardId"   : "%s",

                    ...                     "fundCode" : "%s",

                    ...             "investmentPeriod" : "%s"

                    ...            }

用例中:

*** Test Cases ***

${设置计划接口_请求body-new}=  string format  ${设置发动码接口_请求body}  ${cardId}  ${fundCode}  ${investmentPeriod}

3.将金额的格式进行转变,例如将2000转为2,000.00

定义${amount}为2000

${expectAmount}=  Format number to String    {:,.2f}  ${amount}

如果最终的值需要显示成2,000.00 元,则直接在使用时后面加上元。如下:

${expectResult}=  create dictionary  amount ${expectAmount} 元  amountDesc  ${amountDesc}

4.将int型转成string。

数据库查到的值是int型的,但接口返回是string型,则可以通过如下方式转:

${planId-new}=  transfer to string  ${planId}

5.以上的string format,Format number to String,transfer to string都是封装好的关键字。

我们看其中的Format number to String的具体实现。

Format number to String

    [Arguments]   ${format}   ${number}

    ${number_string}=  format number   ${format}   ${number}

    [Return]  ${number_string}

再看一下format number方法怎么写的:

def format_number(format_str,number):

         return format_str.format(number)

实现的方式是先写了方法去调用原始的format方法,再去写个关键字调用自己写的方法。为什么要这样做?一方面是因为python的原始方法在robotframework中是不能直接用的,另一方面,如果原始方法发生变化,只需要改动自己封装的方法,便于维护。

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!

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

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

相关文章

Qt学习09:其他基本小控件

文章首发于我的个人博客:欢迎大佬们来逛逛 文章目录 QSpinBoxQDateTimeEditQComboBoxQSliderQRubberBand QSpinBox 微调框,可以通过点击增加减小或者输入来调整数据。 继承自:QAbstractSpinBox 同时这个类还具有Double类型的版本。 常用操…

搭建Scala开发环境

一、Windows上安装Scala 1、到Scala官网下载Scala Scala2.13.10下载网址:https://www.scala-lang.org/download/2.13.10.html 单击【scala-2.13.10.msi】超链接,将scala安装程序下载到本地 2、安装Scala 双击安装程序图标,进入安装向导&…

笔试强训错题总结(二)

笔试强训错题总结(二) 选择题 下列哪一个是析构函数的特征() A. 析构函数定义只能在类体内 B. 一个类中只能定义一个析构函数 C. 析构函数名与类名不同 D. 析构函数可以有一个或多个参数 析构函数可以在类中声明&#xff0c…

np.arange()用法+reshape+np.dot()

1.np.arange()用法 np.arange()函数返回一个有终点和起点的固定步长的排列 # 参数个数情况: np.arange()函数分为一个参数,两个参数,三个参数三种情况 # 1)一个参数时,参数值为终点,起点取默认值0&#xff…

SpringBootSecurity 简单明了

在autoConfiguration Jar的imports文件里面有 SecurityFilterAutoConfiguration类,这样springboot会自己加载这个类。 该类的作用是向容器内部注入一个RegisterBean叫DelegatingFilterProxyRegistrationBean,由于它同时实现了ServletContextInitializer接…

Redis问题处理

1、jemalloc/jemalloc.h:没有那个文件或目录 解决方法: 正确解决办法(针对2.2以上的版本) 清理上次编译残留文件,重新编译 make distclean && make

【学术小白如何写好论文】文献综述

文章目录 一、前言1.目的2.作用 二、切入角度三、写作方法 一、前言 前言:在撰写这部分的时候,我们首先要明确文献综述的目的是什么,作用是什么。 1.目的 梳理前人研究的脉络找出前人研究的不足 2.作用 让本研究更充实,告诉读者…

路径规划算法:基于蛾群优化的路径规划算法- 附代码

路径规划算法:基于蛾群优化的路径规划算法- 附代码 文章目录 路径规划算法:基于蛾群优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法蛾群…

SpringSecurity实现前后端分离登录token认证详解

目录 1. SpringSecurity概述 1.1 权限框架 1.1.1 Apache Shiro 1.1.2 SpringSecurity 1.1.3 权限框架的选择 1.2 授权和认证 1.3 SpringSecurity的功能 2.SpringSecurity 实战 2.1 引入SpringSecurity 2.2 认证 2.2.1 登录校验流程 2.2.2 SpringSecurity完整流程 2.2.…

翻译的技巧

400字左右的文章中划出5个句子, 30分钟内将其翻译成中文,分值10分。文章的题材大多是有关政治、经济、文化、教育、科普以及社会生活,议论文为主,说明文为辅,结构严谨,逻辑性强,长难句较多。不仅…

基于深度学习的高精度人脸口罩检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度人脸口罩检测识别系统可用于日常生活中或野外来检测与定位人脸口罩目标,利用深度学习算法可实现图片、视频、摄像头等方式的人脸口罩目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5…

mcu:利用Cortex-M中的DWT实现高精度计时

1、Cortex-M中的DWT 在Cortex-M里面有一个外设叫DWT(Data Watchpoint and Trace),是用于系统调试及跟踪。 它有一个32位的寄存器叫CYCCNT,它是一个向上的计数器,记录的是内核时钟运行的个数,内核时钟跳动一次,该计数器…

node-red 部署案例指导

配置node-red静态资源目录 找到 node-red 的设置文件 可以在启动日志中看到 以我的为例 C:\Users\fizz\.node-red\settings.js 我们在.node-red目录创建一个static目录。用于存放静态文件。 然后修改setting.js的 httpStatic: ‘C:/Users/fizz/.node-red/static/’, 重启…

探索戴森在科技行业的统治地位:分析其后吹风机的成功

2016年,戴森(Dyson)公司推出重新定义审美与功能的吹风机Supersonic,定价为3000元,七年来,Supersonic不仅没有因其价格远高于竞品而被市场淘汰,反而稳居国内市场吹风机的“龙头宝座“&#xff0c…

低秩矩阵(Low-Rank)的意义

1.回顾基础: 矩阵的秩度量的是矩阵行列之间的相关性,如果各行各列都是线性无关的,矩阵就是满秩。非零元素的行或列决定了秩的大小。//划重点,秩可以度量矩阵自身相关性 讲个小故事…

调用阿里API实现全国快递物流查询

作者介绍 王梅(姓名),女(性别),西安工程大学电子信息学院,2022级研究生 研究方向:机器视觉与人工智能 电子邮件:1095647386qq.com 王泽宇,男,西安工程大学电子信息学院…

一文让你轻松拿捏 Spring MVC

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…

高完整性系统——霍尔逻辑

文章目录 霍尔三元组案例1案例2 逻辑推导规则forward v.s. backwardforwardbackward rule of assignmentrules of consequence结合上述两个 rulerule of sequencing更大的程序案例skip ruleconditional rule案例 要证明这个程序需要从上往下进行,先单独证明 f:1, i:…

你“被”全链路了么?全链路压测实践之理论

要说当下研发领域最热门的几个词,全链路压测 肯定跑不了。最近的几次大会上,也有不少关于全链路的议题。之前有朋友在面试过程中也有被问到了什么是全链路压测,如何有效的开展全链路压测。今天我们就来聊聊全链路压测,但本文不会涉…

Redis.conf 详解

我们启动 Redis,一般都是通过 Redis.conf 启动。 因此,我们必须了解 Redis.conf 的配置,才能更好理解和使用 Redis。 单位 单位注意事项:当需要内存大小时,可以指定为1k 5GB 4M等 通常形式: 1k > 1000字…