RobotFramework 接口测试实战落地

news2025/7/29 18:01:48

目前我在负责一个APP的测试工作。在项目中使用 RobotFramework作为工具搭建接口自动化框架,进行接口自动化的工作。

本文将从我个人对接口测试和自动化框架的理解以及RobotFramework在实际项目中落地两个大方面进行讲解。

对接口测试的理解

浅谈接口自动化框架

可以实现接口测试的框架有很多,比如 Pytest,TestNG,RobotFramework 等等,今天就不过多展开对框架的对比了。但是想从公共的角度聊一聊,当你想使用一个工具搭建一套属于自己项目的框架,都应该包括以下几个组成部分:

图片

(作者原创整理)

这是一个大致通用的结构,想明白、设计好这几个组件之间的关系,那么不管咱们使用任何自动化框架都会很快上手。

浅谈接口测试用例设计思路

在做接口测试时,应该关注的角度有:功能,边界,性能。在设计接口测试用例时,可以从下方图示中根据项目的实际情况设计用例。

图片

(作者原创整理)

实战中接口用例编写

但是在项目的实际运行当中,把接口测试用例设计完备是我们的目标,但是项目中,是否有时间,是否有必要对每个接口都进行完备的编写,还需要根据实际情况酌情设计测试策略,根据我平时的工作经验,我把接口测试分为三个层面:

1.连通性验证层次:对接口能否调用通的验证,验证状态码(比如200,500等),对入参出参进行验证(如格式,边界等);

2.业务逻辑验证层次:在校验入参和出差的同时,结合实际的业务进行验证,会引入前提条件,从业务角度校验入参出参的正确性;

3.场景验证层次:在验证逻辑层次的基础上,结合具体的业务场景,此时单个接口测试已经不够,需要多个接口进行配合,有逻辑的前后顺序。

自动化测试的核心目的之一就是节省人力,从2和3的层面测试上,就已经可以覆盖功能测试点,节省人力测试的时间了。

RobotFramework项目中的落地

在这一部分中,主要以几个关键环节做一个简单的扩展,希望对你能有些启发。

文件目录设计

根据项目的实际情况,参考框架的组成部分,设计自动化框架的项目的目录结构。

图片

公共类库设计

根据项目的实际情况,设计一些公共方法。在我这个项目中,我着重处理的是对Python Requests类的封装。之所以封装Requests,是为了实现我测试用例中想实现的一些公共的功能,举例说明一些想实现的能力:

登录后可以在后续的请求中复用token

class CommonRequest:
    # 创建静态类,封装Requests
    def __init__(self):
        """基类初始化
        """
        self.headers = {
            "Content-Type": "application/json;charset=utf-8",
        }
        self.token = None        # 在后续新建的方法中获取token赋值
        self.username = None
        self.password = None

在其他封装的方法中,完善自己想要的功能,为了在用例中多角度去断言。

以封装Get请求为例,将响应码和请求的响应时间封装到body里,用于断言。

def get_request(self, url, params=None, headers=None, **kwargs):
    """封装get操作
    """
    try:        response = requests.get(url=url, headers=self.headers, verify=False, **kwargs)
        content = json.loads(response.text)
        response_d = dict()
        response_d["code"] = response.status_code  # 将响应码返回到body中
        response_d["response_time"] = response.elapsed.total_seconds()  # 将响应时间返回到body中
    except Exception as e:        raise Exception("Exception: {}".format(e))
    response_d["body"] = content

    return response_d

梳理配置文件关系

设计好配置文件的上下引用关系,可以大大提高接口项目的健壮性,拿接口地址为例,将环境信息不断抽层,最终实现只改动一个变量来匹配不同的环境。

&{uat}        app_base_url=https://demo-api.com        app_h5_url=https://demo-h5.com
${app_url}        ${uat}[app_base_url]
${api_url}        ${app_url}/v1/demo/test

编写测试用例

上面的工作准备差不多后,就可以开始真正的测试用例编写了。你会发现,当你设计一个框架的时候,用例是最后编写的,准备工作就绪后,编写用例就变成了体力活。

Class_01_Demo用例
    #定义测试接口
    ${url}    Set Variable    ${api_url}
    #发送请求(此时的Get Request已经是封装后的了)
    ${response}    Get Request    ${url}
    #断言
    Should Be Equal As Strings    ${response["code"]}    200    #断言响应码应该是200
    Should Be True    ${response["response_time"]}<1             #断言响应时间小于1s

以上是一个很粗的落地过程,省略了很多通用步骤,将一些重要的环节拿出来做了阐述。如果是RobotFramework 初学者可能看不懂上面的内容,上面的流程比较适用于在 RobotFramework上摸爬滚打了一段时间的小伙伴,希望可以对你有些启发,也欢迎随时与我交流,共同进步!

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以加入我们的QQ群:746506216,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

图片批量转为PDF怎么转?这些方法亲测实用

你们平时在整理照片的时候&#xff0c;有把多张图片转为PDF文件的需求吗&#xff1f;我因为工作需要&#xff0c;会拍摄和存储很多照片&#xff0c;而且经常需要将这些照片归类&#xff0c;整合到一个PDF文件中。可能有的小伙伴还不知道多张图片转PDF怎么转&#xff1f;别着急&…

2022全球智慧城市大会 升哲科技:以人为核心推动智慧城市建设

11 月 15 日 至 16 日&#xff0c;“全球智慧城市大会 成都”在成都召开。此次会议主题为“人民 激活 城市”&#xff0c;与“全球智慧城市大会 巴塞罗那”同期举办&#xff0c;采用线上与线下结合模式&#xff0c;链接全球 80 多个国家 600 多座城市参会代表。升哲科技&am…

三冲IPO的思派健康如何承载腾讯的互联网医疗梦?

腾讯在互联网医疗领域的“大将”思派健康10月27日向港交所主板递交第三次上市申请&#xff0c;在2021年8月6日和2022年2月25日两次“折戟”港交所后&#xff0c;此次能否如愿以偿仍未可知。 我国当前正步入老龄化社会&#xff0c;慢性病人口增加&#xff0c;市场对医疗健康方面…

2000年-2020年31省市城乡收入差距泰尔指数

2000年-2020年31省市城乡收入差距泰尔指数 1、来源&#xff1a;统计NJ和各省NJ 2、时间区间为2000-2020年 3、指标包括&#xff1a;居民人均可支配收入、城镇家庭可支配收入、农村家庭可支配收入、总人口、城镇化率、城镇总人口、农村总人口、城镇总收入、农村总收入、总收…

CAS:73342-16-2,Azide-PEG-Hydroxy,N3-PEG-OH,叠氮PEG羟基

化学试剂叠氮-聚乙二醇-羟基&#xff0c;其英文名为Azide-PEG-Hydroxy&#xff0c;N3-PEG-OH&#xff0c;它所属分类为Azide PEG Hydroxyl PEG。 叠氮PEG羟基的分子量均可定制&#xff0c;有&#xff1a;叠氮-PEG 3400-羟基、N3-PEG 2000-OH、N3-PEG 1000-OH、叠氮-聚乙二醇 1…

17.Redis系列之快照RDB方式持久化

本文学习redis两大持久化技术之一&#xff1a;RDB&#xff08;redis database&#xff09;快照方式持久化备份与还原&#xff0c;以及RDB方式的优缺点 1. RDB相关配置 首先我们先简单了解下Redis7中RDB相关配置 // save <seconds> <changes> [<seconds> &…

Python理论之一 —— 数据读写

文章目录1. Excel1.1 openpyxl 模块1.1.1 打开表格、读取/获取信息1.1.1.1 打开表格、获取表格内sheet名&#xff1a;1.1.1.2 根据sheet名获取工作表1.1.1.3 获取表格的尺寸大小&#xff1a;尺寸大小指excel表格中的数据有几行几列1.1.1.4 获取表格内某个格子的数据&#xff1a…

电影《扫黑行动》观后感

上周看了电影《扫黑行动》&#xff0c;讲述三年扫黑除恶专项行动中的一个具体事件。 记得前几年&#xff0c;估计你也听过类似新闻&#xff0c;就是大学贷&#xff0c;学生贷等等系列&#xff0c;面向学生的贷款&#xff0c;借钱的人明知道&#xff0c;学生一般是没有偿还能力的…

在家每次开门都安心,在外也能芝麻开门——云米AI智能门锁Super 2体验

很多人都遇到过出门忘带钥匙的尴尬&#xff0c;好在如今有了智能门锁这种看家好工具&#xff0c;既可以通过密码、指纹等多种方式轻松开锁&#xff0c;又可以随时通过手机APP来查看异常情况&#xff0c;确实是现在居家必备的好东西。这个月我也把家里大门上不太好用的老锁&…

IPWorks WebSockets Delphi版

IPWorks WebSockets Delphi版 IPWorks WebSocket包括一组功能强大的组件&#xff0c;用于将WebSocket通信功能集成到Web、桌面和移动应用程序中。这些组件非常适合构建需要实时数据的Web连接应用程序&#xff0c;包括聊天、多人游戏、实时金融应用程序等。 IPWorks WebSockets功…

Linux18 ---进程和线程、线程实现方法、线程的使用接口、多线程代码实现、线程并发运行

一、进程和线程&#xff1a; 1、进程和线程的相关概念&#xff1a; 进程&#xff1a;是一个正在运行的程序&#xff0c;是个动态的概念。一个进程可以实现多个线程。 线程&#xff1a;是进程内部的一条执行路径或称为执行序列&#xff0c;不同平台下线程的实现机制不相同&am…

基于Android车载系统模块资料

在从事车载Android应用开发前&#xff0c;必须要对汽车座舱的基本结构有一个大体的认知&#xff0c;只有意识到汽车座舱是一种与手机完全不同的架构&#xff0c;才能更好的助力我们日后学习车载Android应用的开发。下面就来介绍一个比较主流的车载操作系统架构。 注意&#xff…

Unity实现一个可扩展的UGUI无限滑动列表控件

采用 缓存池存储布局坐标 实现的一个可横向或纵向滑动的无限滑动列表 Demo展示&#xff1a; 功能支持&#xff1a; 可以满足大部分如背包&#xff0c;商店商城&#xff0c;工具栏&#xff0c;任务栏窗口等列表功能 支持整个列表刷新或单个对象刷新支持横向多行滑动&#xff…

【Python】快速入门

目录 基础储备 Python输出&#xff1a; Python换行&#xff1a; Python命名规则&#xff1a; Python变量: Python运算&#xff1a; Python注释&#xff1a; 小点&#xff1a; Python的两种模式&#xff1a; Python的用户问答互动程序&#xff1a; Python条件语句 P…

Kubernetes-in-action (一)

Kubernetes-in-action (一) 链接为书内容中对应代码的地址&#xff1a;https://github.com/luksa/kubernetes-in-action 前置之 docker 基础 安装docker使用docker安装镜像、进入镜像&#xff0c;查看进行信息docker build -t kubia . # 使用当前目录的Dockerfile构建镜像&…

m基于Matlab的fir和iir数字滤波器的设计与仿真

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 MATLAB系统供了许多工具箱&#xff08;Toolbox&#xff09;&#xff0c;借助于信号处理工具箱&#xff08;signal processing&#xff09;中的freqz_m&#xff0c;remez等函数&#xff0…

软件测试 | 测试工程师都能看懂的redis,进阶测试开发工程师......

目录&#xff1a;导读前言一、Redis是什么&#xff1f;为啥性能好&#xff1f;二、数据类型&#xff1f;常见的命令&#xff1f;1、String 字符串类型2、Hash 数据类型3、List 链表数据4、Set 无序集合类型5、Zset 有序集合类型三、有几种持久化方式&#xff1f;优缺点?四、数…

Flink-输出算子(Sink)使用

5.5 输出算子 5.5.1 概述 print也是一种输出类PrintSinkFunction 创建了一个PrintSinkFunction操作&#xff0c;然后调用addSink方法的作为传入参数 PrintSinkFunction这个类继承自RichSinkFunction富函数类 RichSourceFunction类 继承了AbstractRichFunction富函数类 …

springboot2整合开发流程示例

1.整体开发逻辑 初始配置示例 开发文件示例 2.开发过程问题 ①默认配置路径 thymeleaf默认解析静态资源路径为 /templates/** ②mybatisplus核心工作原理 mapper继承的BaseMapper中声明了CRUD操作service接口继承的IService接口中抽象方法简单封装了CRUD操作 传入了类&a…

Win10系统如何安装配置maven

【原文链接】Win10系统如何安装配置maven &#xff08;1&#xff09;若未装jdk&#xff0c;可先参考 Win10系统下载安装配置JDK1.8 安装jdk8 &#xff08;2&#xff09;从 maven下载地址 &#xff0c;下载maven&#xff0c;如下&#xff0c;可以下载最新版本&#xff0c;也可…