零代码实现接口自动化测试-RF框架实践

2023-11-12

robotframework是一款关键字自动化测试框架,可能做各种类型的自动化测试。本文介绍通过 robotframework 来实现接口测试。

安装接口请求的第三方库

pip install robotframework-requests

在python安装目录的Lib\site-packages可以看到在这里插入图片描述

接口关键字基础

robotframework-requests关键字文档地址:http://marketsquare.github.io/robotframework-requests/doc/RequestsLibrary.html

以码同学全栈接口项目中的以下接口为例:在这里插入图片描述

在这里插入图片描述

  1. 创建测试集合并导入接口库

创建一个测试集合apibasic,选中后在设置区导入RequestsLibrary库在这里插入图片描述

测试集合下添加集合全局变量host,作为接口测试的域名在这里插入图片描述

在该集合下将会针对码同学全栈接口项目中的接口进行测试,每个接口的域名都是一致的,因此我们给测试集合增加一个前置动作,前置动作里完成该域名下session的创建,那么在用例之中发起请求时都使用该session,可以帮我们有效关联相关数据

关键信息解释,创建一个session对象,命名为pinter:

Create Sesion:这是接口库提供的一个关键字,用来创建一个session对象

pinter:这是自定义起的一个session对象的名字,用于后续其他地方要使用时进行引用${host}:这是引用集合变量定义的host在这里插入图片描述

2. get接口

创建一个用例,起名叫get接口

Get On Session:发起get请求的关键字

${resp.json()}[message]:表示提取接口响应body体重的message字段在这里插入图片描述

3. post 表单接口

创建一个用例,起名叫post表单接口

Post On Session:发起post请求的关键字在这里插入图片描述

4. post json接口

由于json格式参数通常比较多,所以我们将他定义成了普通变量,但是接口关键字请求时json参数 必须是字典格式,所以使用Evaluate关键字将字符串形式的json参数转换成字典在这里插入图片描述

5.put 接口

在这里插入图片描述6.delete 接口在这里插入图片描述

7.文件上传

表单形式上传

Get File For Streaming Upload:获取本地文件转换成流对象

${resp.text}:因为该接口返回信息并不是json串,是个纯文本,所以使用这种方式获取在这里插入图片描述

Ajax上传接口

在这里插入图片描述8. 文件下载接口在这里插入图片描述

9. 需要签名验证的接口

接口参数格式如下,其中timestamp参数时实时的毫秒时间戳

{“phoneNum”:“123434”,“optCode”:“testfan”,“timestamp”:“12112121212”,“sign”:“your sign data”}

签名规则如下:

sign字段的值 = phoneNum+optCode+timestamp

组合在一起然后进行md5加密

因此在脚本中需要先进行加密处理,同时因为用到了实时时间戳,所以我们要导入一个时间处理库 DateTime库,在测试集合中导入DateTime库

加密时的核心:

hashlib.md5(’p h o n e N u m {phoneNum}phoneNum{optCode}${timestamp}’.encode(encoding=‘utf8’)).hexdigest()

计算得到毫秒时间戳:

int(round(${timestamp} *1000))

脚本如下:9. 需要签名验证的接口

接口参数格式如下,其中timestamp参数时实时的毫秒时间戳

{“phoneNum”:“123434”,“optCode”:“testfan”,“timestamp”:“12112121212”,“sign”:“your sign data”}

签名规则如下:

sign字段的值 = phoneNum+optCode+timestamp

组合在一起然后进行md5加密

因此在脚本中需要先进行加密处理,同时因为用到了实时时间戳,所以我们要导入一个时间处理库 DateTime库,在测试集合中导入DateTime库

加密时的核心:

hashlib.md5(’p h o n e N u m {phoneNum}phoneNum{optCode}${timestamp}’.encode(encoding=‘utf8’)).hexdigest()

计算得到毫秒时间戳:

int(round(${timestamp} *1000))

脚本如下:

在这里插入图片描述

10. cookie关联

在使用相同的session对象时,会自动做到cookie关联

先实现登录接口的用例,再实现查询余额接口的测试,然后两个一起执行即可在这里插入图片描述

一起执行,勾选两条用例在这里插入图片描述

11. token关联

对于接口鉴权采用token时,即便采用相同的session对象也是关联不了的,需要我们自行处理

业务规则:

登录接口成功后响应信息中的data字段就是产生的token值

查询余额接口请求时headers中的testfan-token字段就是token参数名称

因此我们需要从登录接口响应中提取data,并将其传给查询余额的接口headers

脚本如下:

在这里插入图片描述

在这里插入图片描述

rf数据驱动实现接口测试

  1. 安装数据驱动依赖库

pip install robotframework-datadriver
在python安装目录的Lib\site-packages可以看到在这里插入图片描述

2. 准备测试数据文件

以码同学全栈接口项目的一个登录接口为例,准备测试数据

创建一个excel文件写入如下数据:在这里插入图片描述

第一行第一列是固定格式,表示测试用例名称

第二列开始是测试数据对应的变量名称

第二行开始是测试数据

  1. 创建测试集合并导入第三方库

 创建测试集合apidatadriver,导入库RequestsLibrary和DataDriver,注意导入DataDriver时要写参数,导入后标红的话先不用管,继续做在这里插入图片描述

4. 创建集合变量并初始化session在这里插入图片描述5. 创建登录接口关键字在这里插入图片描述 

6. 创建测试用例引用数据驱动

测试用例中只需要在设置的模板中填写第5步创建的登录接口关键字即可在这里插入图片描述

执行测试,测试数据有三组,登录接口也执行了三次在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

零代码实现接口自动化测试-RF框架实践 的相关文章

  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • Web自动化测试 —— capability参数配置

    一 capability概述 capability是webdriver支持的标准命令之外的扩展命令 配置信息 配置web驱动属性 如浏览器名称 浏览器平台 结合selenium gird完成分布式 兼容性测试 官网地址 https www
  • 自定义 HTTP 方法在 Retrofit 2 中不起作用

    您好 我在代码中使用了自定义方法 如下所示 但它总是给我 java lang IllegalArgumentException 方法 AUTH 不得有 请求正文 我的代码无法正常工作 它总是说 Custom method AUTH must
  • 使用 OkHttp、Okio 和 RxJava 下载文件

    我正在尝试使用 OkHttp 下载文件并使用 Okio 写入磁盘 我还为此过程创建了一个 rx observable 它正在工作 但是它比我以前使用的 Koush 的 Ion 库 明显慢 以下是我创建可观察对象的方法 public Obse
  • java.net.SocketTimeoutException:超时

    With OkHttp图书馆 应用程序面临以下SocketTimeoutException问题 如果请求大小较小 则可以正常工作 小于 1MB 我在 10 秒内收到此异常 甚至我的套接字超时 readTimeout 价值要高得多 请求始终失
  • 模拟 Retrofit 响应调用,但 Call 不起作用

    我正在嘲笑 APIService 的响应 不幸的是 它不起作用 我必须回电 但我不明白如何做 问题是如何发回 Call 对象 RunWith AndroidJUnit4 class class ApiServiceTest Test fun
  • HTTP静态资源永久缓存策略

    In 有效的 Android HTTP https plus google com JesseWilson posts QmyisEuJB7e杰西 威尔逊提到了以下内容 提供图像等静态资源 使用永久 URL 并让它永久缓存 我在用Picas
  • 使用 Retrofit 2.0.x 进行 HTTP 缓存

    我正在尝试使用 Retrofit 2 0 在我的应用程序中缓存一些响应 但我遗漏了一些内容 我安装了一个缓存文件 如下 private static File httpCacheDir private static Cache cache
  • 如何使用 Square OKHTTP 固定证书?

    我想我需要创建一个新的 SSL 套接字工厂 另外 我不想使用全局 SSL 上下文 https github com square okhttp issues 184 https github com square okhttp issues
  • 处理 Kotlin 协程中自定义 okhttp 拦截器抛出的异常

    我正在使用自定义Interceptor与我的 Android 应用程序中的 Retrofit 客户端一起 在某些特定情况下会引发异常 我正在尝试使用 Kotlin 协程使其工作 问题是我无法处理前面提到的错误 因为在拦截器实例中抛出异常的那
  • okhttp3 上的流意外结束

    我已经遵循了这个link https stackoverflow com questions 35238894 android retrofit 2 authenticator result刷新访问令牌 将 Authenticator 添加
  • OkHttp javax.net.ssl.SSLPeerUnverifiedException:主机名domain.com未验证

    我几天来一直在努力让它发挥作用 我正在尝试通过以下方式连接到我的服务器https带有自签名证书 我认为现在没有任何页面或示例是我未读过的 我做了什么 按照本教程创建了 bks 密钥库 http blog crazybob org 2010
  • 改造添加带有令牌和 ID 的标头

    我在获取经过身份验证的用户时遇到问题 在此之前我得到了令牌和用户 ID 现在我需要使用访问令牌和 ID 从服务器获取用户 我有标题格式 https i stack imgur com OQ87Y png 现在我尝试使用拦截器添加带有用户令牌
  • 使用 OkHttp 下载损坏的文件

    我编写的下载文件的方法总是会产生损坏的文件 public static String okDownloadToFileSync final String link final String fileName final boolean te
  • OkHttp Authenticator 有时不会调用多个 Retrofit 实例的验证

    我有两个不同的Retrofit两个不同 API 的实例 我也有两个不同的OkHttp3客户 但他们共享相同的Authenticator因为两个 API 的身份验证令牌是相同的 问题是当令牌过期时有时 但几乎总是 其中之一Retrofit O
  • java.net.ProtocolException:流意外结束

    我面临一个奇怪的问题 并且无法调试它 我已经实现了上传数据流的逻辑 并使用 Volley 来实现相同的功能 我在HurlStack addBodyIfExistsapi 以便可以处理 application octet stream 类型的
  • Android 如何使用 OkHttp 从 Callback 获取响应字符串?

    这是我的代码 OkHttpClient okHttpClient new OkHttpClient Request request new Request Builder url http publicobject com hellowor
  • okHttp3 java.lang.NoSuchMethodError:没有虚拟方法 setCallWebSocket

    我已从 okhttp Retrofit 更新到 okhttp3 Retrofit2 但我的应用程序因此异常而无法启动 FATAL EXCEPTION EventThread Process appli speaky com PID 1470
  • Retrofit 2.0b2:如何从响应中获取InputStream?

    我正在使用 Retrofit 2 0b2 收到响应后 我尝试通过以下方式从响应中获取 InputStream Response
  • UnknownHostException:名称或服务未知

    我正在尝试使用 com squareup okhttp 中的 OkHttpClient 从 API 返回一些数据 我遇到了一些错误 我最终能够克服这些错误 但我无法克服这个主机异常错误 并且这里似乎没有任何内容足够具体到我的情况能够解决 下

随机推荐