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

在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.mfbz.cn/a/783346.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

E - Tree and Hamilton Path 2

算出所有路径之和2减去树的直径 #include <bits/stdc.h> using namespace std; typedef long long ll; const int N2e610; ll n,ans; ll e[N],h[N],idx,w[N],ne[N],dis[N]; void add(ll a,ll b,ll c){ e[idx]b,ne[idx]h[a],w[idx]c,h[a]idx; } ll c; void dfs(ll u,…

23款奔驰S400升级原厂后排电动座椅调节有哪些功能

奔驰 S400 商务版升级后排电动座椅后&#xff0c;通常会具备以下功能&#xff1a; • 电动调节功能&#xff1a;可以通过按钮或控制面板来调节座椅的前后、上下、倾斜等位置&#xff0c;以获得最佳的舒适度。 • 座椅加热功能&#xff1a;在寒冷的天气中&#xff0c;座椅加热…

云渲染平台那个好?2024云渲染测评

1.渲染100&#xff08;强烈推荐&#xff09; 以高性价比著称&#xff0c;是预算有限的小伙伴首选。 15分钟0.2,60分钟内0.8;注册填邀请码【5858】可领30元礼包和免费渲染券) 提供了多种机器配置选择(可以自行匹配环境)最高256G大内存机器&#xff0c;满足不同用户需求。支持…

自然语言处理领域介绍及其发展历史

自然语言处理领域介绍及其发展历史 1 NLP2 主要任务3 主要的方法1 基于规则的方法&#xff08;1950-1980&#xff09;2 基于统计的方法&#xff08;传统的机器学习的方法&#xff09;3 Connectionist approach&#xff08;Neural networks&#xff09; 1 NLP 自动的理解人类语…

uniapp父页面调用子页面 组件方法记录

文章目录 导文如何点击父页面&#xff0c;触发子页面函数先写一个子页面的基础内容父元素 如何点击父页面&#xff0c;修改子页面的值先写一个子页面的基础内容父元素 导文 如何点击父页面&#xff0c;触发子页面函数&#xff1f; 如何点击父页面&#xff0c;修改子页面的值&am…

jvisualvm工具使用--添加远程监视

jvisualvm简介 jvisualvm该工具位于jdk的bin目录下&#xff0c;是jdk自带的可用于监控线程、内存情况、查看方法的CPU时间和内存中的对 象、已被GC的对象、反向查看分配的堆栈等&#xff0c;即&#xff1a;Java虚拟机监控、故障排查及性能分析工具。 远程监控方法 以windows端…

最小二乘法实践

食堂饭菜价格表如下图所示&#xff0c;采用最小二乘法估算荤菜、素菜、米饭的价格构成&#xff0c;增加一条记录&#xff0c;两荤22元。 提取训练数据&#xff1a; x z 12 y z 14 2x z 22 x y z 18 x 2y z 23 2x y z 26 3x y z 36 代码如下&#xff1a; i…

事件mousePressEvent、paintEvent、closeEvent、keyPressEvent】

事件 mousePressEvent、paintEvent、closeEvent、keyPressEvent 鼠标样式的设置 按WSAD通过keyPressEvent事件移动按钮 通过事件mousePressEvent获取鼠标位置的相对位置&#xff0c;绝对位置 cusor 鼠标样式设置成十字星 .h #ifndef DEFAULTHANDLEREXAMPLE_H #define DEFAUL…

01:单片机开发前的准备工作

单片机开发前的准备工作 1、 开发环境的安装2、创建工程和文件3、编译代码4、下载到单片机 1、 开发环境的安装 第一步&#xff1a;安装KEIL开发软件&#xff0c;按照如下步骤按照软件 第二步&#xff1a;注册KEIL软件 2、创建工程和文件 第一步&#xff1a;先在F盘创建一个文…

取得了PMP证书后有哪些优势?不清楚的快来看!

拿到PMP证书后&#xff0c;个人可以享受到一系列的福利&#xff0c;这些福利主要包括但不限于以下几个方面&#xff1a; 职业发展优势 PMP证书是项目管理领域的全球权威认证&#xff0c;能证明持证者具备系统的项目管理知识和经验。在求职和职业发展过程中&#xff0c;PMP证书…

【基础算法总结】分治—归并

分治—归并 1.排序数组2.交易逆序对的总数3.计算右侧小于当前元素的个数4.翻转对 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.排序数组 …

阶段三:项目开发---民航功能模块实现:任务18:指挥航空公司架次与延误率占比

任务描述 内 容&#xff1a;在前面的“使用Spark清洗统计业务数据并保存到数据库”任务中&#xff0c;已经通过Spark Streaming 清洗程序&#xff0c;将Kafka中Topic为“task_Aftn”的报文数据&#xff0c;经过数据清洗后&#xff0c;保存到了MySQL数据库中&#xff1b;本节任…

LLM 入门与实践(四) Yi 部署与分析

本文截取自20万字的《PyTorch实用教程》&#xff08;第二版&#xff09;&#xff0c;敬请关注&#xff1a;《Pytorch实用教程》&#xff08;第二版&#xff09;无论是零基础入门&#xff0c;还是CV、NLP、LLM项目应用&#xff0c;或是进阶工程化部署落地&#xff0c;在这里都有…

【C++】stack和queue的模拟实现 双端队列deque的介绍

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; STL || C 目录 &#x1f308;前言&#x1f525;stack的模拟实现&#x1f525;queue的模拟实现&#x1f525;deque&#xff08;双端队列&#xff09;deque的缺陷 &#x1f308;为什么选择…

免费分享:1981-2016全球粮食产量数据集(附下载方法)

了解主要作物的历史产量模式&#xff0c;包括趋势和年际变化&#xff0c;对于了解在粮食需求和气候变化日益增长的情况下粮食生产的现状、潜力和风险至关重要。 数据简介 1981-2016全球粮食产量数据集是农业普查统计&#xff08;粮农组织报告的国家产量统计数据&#xff09;和…

Python3极简教程(一小时学完)中

异常 在这个实验我们学习 Python 的异常以及如何在你的代码中处理它们。 知识点 NameErrorTypeError异常处理&#xff08;try..except&#xff09;异常抛出&#xff08;raise&#xff09;finally 子句 异常 在程序执行过程中发生的任何错误都是异常。每个异常显示一些相关…

多国广播无线电台RadioMaximus Pro 2.33.00

RadioMaximus Pro是一款适用于Windows的程序,可让您收听和录制互联网上数以千计的广播电台。使用RadioMaximus Pro,您可以享受来自世界各地的最多样化的收音机。 RadioMaximus Pro是一款具有录音功能的全功能收音机播放器,您可以同时收听和录制多个电台,创建自动录音时间表…

搞不清啊?伦敦金与上海金区别是?

进入黄金市场的朋友&#xff0c;有可能会被各式各样的黄金交易品种带得眼花缭乱&#xff0c;其实各品种虽然都以黄金作为投资标的物&#xff0c;但是也是各有不同的&#xff0c;下面我们就来比较一下相似的投资品种——伦敦金和上海金。 首先在比较之前&#xff0c;我们要搞清楚…

js逆向研究【响应结果解密思路与案例实战】

什么是响应结果加密 我们在爬虫过程中&#xff0c;抓包之后&#xff0c;针对内容关键词搜索无法定位到数据接口&#xff0c;并在响应的接口内发现有编码/不可读的长字符串等&#xff0c;我们可以判定其为响应结果加密。 如何针对将响应结果还原为可读的数据 如果响应结果有特…

Android平台实现RTSP拉流转发至轻量级RTSP服务

技术背景 我们在做Android平台RTSP转发模块的时候&#xff0c;有公司提出来这样的技术需求&#xff0c;他们希望拉取外部RTSP摄像头的流&#xff0c;然后提供个轻量级RTSP服务&#xff0c;让内网其他终端过来拉流。实际上&#xff0c;这块&#xff0c;大牛直播SDK前几年就已经…