基于Robot Framework的接口自动化测试
框架是一个通用的验收测试和验收测试驱动开发的自动化测试框架(ATDD),使用的是关键字驱动的测试方法。它本身拥有强大的标准库,此外还可以根据项目需要,使用Python对其测试库和框架本身进行扩展和优化,能同时满足对接口、数据库、UI自动化和服务器端自动化的测试需求,编写测试用例的成本低,维护方便。
RobotFramework框架简介
Robot Framework框架是一个通用的验收测试和验收测试驱动开发的自动化测试框架(ATDD),使用的是关键字驱动的测试方法。它本身拥有强大的标准库,此外还可以根据项目需要,使用Python对其测试库和框架本身进行扩展和优化,能同时满足对接口、数据库、UI自动化和服务器端自动化的测试需求,编写测试用例的成本低,维护方便。
项目说明
本框架使用的是接口设计的分层玩法,分层的原则是:接口数据和接口业务分离。具体为:项目目录结构分层,接口数据与接口用例分离,接口用例与接口业务分离,公共方法和公共配置也接口业务分离,在测试用例中可以传入不定参数,同时也可以定义用例的执行顺序。
技术栈
Robot Framework
RequestsLibrary
HttpLibrary.HTTP
框架目录结构及相关说明
1、框架目录结构图如下

2、目录结构说明
公共配置 ===========> +
配置文件,定义公共请求头、请求域名等
基础模块 ===========> 封装请求方法,公共方法和工具方法模块
功能组件 ===========> 封装接口业务模块,接口依赖模块,多个接口组合复杂业务场景等
主干用例&项目用例 ===========> 存放接口测试用例
代码设计与功能说明
1、封装请求方法,如下
-
*** Settings *** -
Library RequestsLibrary -
Library Collections -
Library HttpLibrary.HTTP -
Resource ../icmcenterApi/公共配置/公共配置_index.txt -
*** Keywords *** -
SendPost -
[Arguments] ${root_url} ${uri} ${ParameterDict} ${DataType} ${header} -
[Documentation] ${root_url}:接口的host; -
... ${uri}:接口uri; -
... ${dict}:接口传入参数,字典数据类型; -
... ${DataType}:传入参数类型,如data等; -
... ${header}:请求头,字典类型。 -
... -
... 响应数据为json类型。 -
... -
... 若为独立请求,可在请求结束后立即释放连接。 -
${RequestData} Create Dictionary -
log ${ParameterDict.keys()} -
: FOR ${key} IN @{ParameterDict.keys()} -
\ set to dictionary ${RequestData} ${key} ${ParameterDict['${key}']} -
log ${RequestData} -
create session api ${root_url} -
${response} post request api ${uri} ${DataType}=${RequestData} headers=${header} timeout=${timeout} -
# 将json的string类型的数据转成python的字典类型 -
Comment ${ResponseBody} To Json ${response.content} -
sleep ${sleepTime} -
log ${response.text} -
[Return] ${response.text} -
SendGet -
[Arguments] ${root_url} ${uri} ${ParameterDict} ${header} -
[Documentation] 响应数据为json类型 -
${RequestData} Create Dictionary -
log ${ParameterDict.keys()} -
: FOR ${key} IN @{ParameterDict.keys()} -
\ set to dictionary ${RequestData} ${key} ${ParameterDict['${key}']} -
log ${RequestData} -
create session api ${root_url} -
${response} get request api ${uri} params=${RequestData} headers=${header} timeout=${timeout} -
Comment ${ResponseBody} To Json ${response.content} -
sleep ${sleepTime} -
log ${response.text} -
[Return] ${response.text} -
re_session -
[Arguments] ${host} -
[Documentation] 创建会话 -
create session session ${host} -
re_post -
[Arguments] ${uri} ${ParameterDict} ${DataType} ${header} -
[Documentation] 不创建会话,仅发送post请求; -
... 响应数据为json类型 -
${RequestData} Create Dictionary -
log ${ParameterDict.keys()} -
: FOR ${key} IN @{ParameterDict.keys()} -
\ set to dictionary ${RequestData} ${key} ${ParameterDict['${key}']} -
log ${RequestData} -
${response} post request session ${uri} ${DataType}=${RequestData} headers=${header} timeout=${timeout} -
Comment ${ResponseBody} To Json ${response.content} -
sleep ${sleepTime} -
log ${response.text} -
[Return] ${response} -
re_get -
[Arguments] ${uri} ${ParameterDict} ${header} -
[Documentation] 不创建会话,仅发送get请求; -
... 响应数据为json类型 -
${RequestData} Create Dictionary -
log ${ParameterDict.keys()} -
: FOR ${key} IN @{ParameterDict.keys()} -
\ set to dictionary ${RequestData} ${key} ${ParameterDict['${key}']} -
log ${RequestData} -
${response} get request session ${uri} params=${RequestData} headers=${header} timeout=${timeout} -
Comment ${ResponseBody} To Json ${response.content} -
sleep ${sleepTime} -
log ${response.text} -
[Return] ${response}
AI写代码
![]()
post请求

get请求

以不定参数的形式封装请求,后续调用时,可传入不同个数的参数,方便不同场景下测试用例的设计
2、封装接口业务模块

根据业务应用场景,组合接口模块
发起请求,获取响应,并进行响应断言
3、测试用例设计
根据业务场景,设计测试用例
调用组合的接口模块,并依据场景需要,传入不同的参数
项目实例演示

感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。 

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)