前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >05 案例:测试框架如何才能支持RESTful风格的接口?

05 案例:测试框架如何才能支持RESTful风格的接口?

作者头像
测试开发囤货
发布2021-08-11 15:11:18
3290
发布2021-08-11 15:11:18
举报
文章被收录于专栏:测试开发囤货

如何让你的测试框架完美支持 RESTful 风格的接口测试。这里我希望你能不断强化封装测试框架的三个流程,不断为自己的接口测试框架添砖加瓦。

RESTful 风格接口关我什么事?

看到这里,你是不是一脸困惑:RESTful 是一个接口的封装风格,和我们测试人员有什么 关系呢?

要想理解它和我们测试工程师的关系,你就要先知道 RESTful 风格的接口到底有什么好。如果你用螺丝、钉子和板材等一系列原材料组装过家具,那么你肯定见到过各种千奇百怪的 螺丝,比如一字的、十字的、三角形的、六角形的和海星形的等等,为了加固这些各式各样 的螺丝,你就要准备各式各样的螺丝刀,因此,你的工具箱就会被不同规格和大小的螺丝刀 填满。

不知道你是不是也和我一样,面对塞满螺丝刀的、乱七八糟的工具箱,心里非常急躁。但后 来我在宜家看到一款螺丝刀,它只有一个刀柄,但给你提供了一整套各种形状、各种大小的 螺丝刀刀头。

这样你在使用时,只要根据螺丝规格的不同,选择替换同形状的刀头就可以了;与此同时, 它们放在工具箱里面又会显得很整齐,而不会七零八落。而且,如果你后续需要使用其它特 殊形状的螺丝刀,你只要买和刀柄连接口一样的刀头就可以了,而不用再买一个完整的螺丝 刀了。

如果你理解了上面这个场景,也就能很好地理解 RESTful 风格的接口了。它主要就是一组 设计原则和约束条件,本质上就是让消费者依据 URI 就可以找到资源,并通过简单的服务 输入输出完成服务的交互。

它主要就是一组设计原则和约束条件,本质上就是让消费者依据 URI 就可以找到资源,并通过简单的服务输入输出完成服务的交互。

RESTful 接口的测试和 原始的 HTTP 协议接口的测试的区别:数据交换的承载方式和操作方式。

  • RESTful 风格的接口主要是以 JSON 格式来进行数据交换
  • 操作方式,在“战场”系统中,我们用了 HTTP 协议的 Get 和 Post,其实 HTTP 协议有很多方法,但是我们仅仅用了这两种,而 RESTful 的规定,使 HTTP 的很多 方法都被利用到了

比如说,Get 方法用来获取资源,Post 方法用来新建资源(或者更新 资源);再比如说,Put 方法用来更新资源、Delete 方法用来删除资源等等。

RESTful 的第一个数据交换的承载方式是 JSON,使用 JSON 字符串和代码对象实体的转换, 它有一个专业的叫法:序列化和反序列化。

我们原来框架中的 Common 类却只支持 Get 和 Post 方法,因此,你需要 在 Common 类中加入 Delete 和 Put 方法的支持。具体的操作你可以依据下面这个代码段 来完成:

代码语言:javascript
复制
import requests


def put(self, uri, params=None):
    '''
    封装你自己的put方法,uri是访问路由,params是put请求需要传递的参数,如果没有参数这里为空
    :param uri: 访问路由
    :param params: 传递参数,string类型,默认为None
    :return: 此次访问的response
    '''
    url = self.url_root + uri
    if params is not None:
        # 如果有参数,那么通过put方式访问对应的url,并将参数赋值给requests.put默认参数data
        # 返回request的Response结果,类型为requests的Response类型
        res = requests.put(url, data=params)
    else:

        # 如果无参数,访问方式如下
        # 返回request的Response结果,类型为requests的Response类型

        res = requests.put(url)

    return res


def delete(self, uri, params=None):
    '''
    封装你自己的delete方法,uri是访问路由,params是delete请求需要传递的参数,如果没有参数这里
    :param uri: 访问路由
    :param params: 传递参数,string类型,默认为None
    :return: 此次访问的response
    '''
    url = self.url_root + uri
    if params is not None:
        # 如果有参数,那么通过put方式访问对应的url,并将参数赋值给requests.put默认参数data
        # 返回request的Response结果,类型为requests的Response类型
        res = requests.delete(url, data=params)
    else:
        # 如果无参数,访问方式如下
        # 返回request的Response结果,类型为requests的Response类型
        res = requests.put(url)
    return res

在上面的代码中,你可以看到,我们为了实现 HTTP 协议的 Put 和 Delete 方法,自己封 装了 put() 函数和 delete() 函数。

总结

到这里,我们已经结束了今天的分享了。我们今天主要完成了 RESTful 风格接口的测试,对比之前的例子以及你自己的测试框架,针对框架中 RESTful 里缺失的部分,我为你提供了对应的解决方法。

随着我们的接口测试分享不断深入以及内容的不断丰富,我相信,你最终会获得一个完全适合你自己,又可以解决实际工作任务的测试框架,这也是你自己的接口测试武器仓库,里面有解决各种接口测试问题的方法。它会是一个私有仓库,里面每一个武器都是为你自己量身定制的,因此,每一件武器你用起来都会更得心应手。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发囤货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档