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

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

如何让你的测试框架完美支持 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 方法的支持。具体的操作你可以依据下面这个代码段 来完成:


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 里缺失的部分,我为你提供了对应的解决方法。

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

相关文章
|
7天前
|
敏捷开发 Java 测试技术
探索软件测试中的自动化测试框架
在软件开发的生命周期中,软件测试扮演着至关重要的角色。随着技术的不断进步和软件项目的日益复杂化,传统的手动测试方法已经无法满足高效、准确的测试需求。自动化测试作为一种提高测试效率和质量的有效手段,越来越受到开发者和测试者的青睐。本文将深入探讨自动化测试框架的重要性、常见的自动化测试工具以及如何选择合适的自动化测试框架。
33 10
|
9天前
|
设计模式 前端开发 JavaScript
自动化测试框架设计原则与最佳实践####
本文深入探讨了构建高效、可维护的自动化测试框架的核心原则与策略,旨在为软件测试工程师提供一套系统性的方法指南。通过分析常见误区,结合行业案例,阐述了如何根据项目特性定制自动化策略,优化测试流程,提升测试覆盖率与执行效率。 ####
32 6
|
9天前
|
人工智能 前端开发 测试技术
探索软件测试中的自动化框架选择与优化策略####
本文深入剖析了当前主流的自动化测试框架,通过对比分析各自的优势、局限性及适用场景,为读者提供了一套系统性的选择与优化指南。文章首先概述了自动化测试的重要性及其在软件开发生命周期中的位置,接着逐一探讨了Selenium、Appium、Cypress等热门框架的特点,并通过实际案例展示了如何根据项目需求灵活选用与配置框架,以提升测试效率和质量。最后,文章还分享了若干最佳实践和未来趋势预测,旨在帮助测试工程师更好地应对复杂多变的测试环境。 ####
30 4
|
8天前
|
监控 jenkins 测试技术
自动化测试框架的构建与实践
【10月更文挑战第40天】在软件开发周期中,测试环节扮演着至关重要的角色。本文将引导你了解如何构建一个高效的自动化测试框架,并深入探讨其设计原则、实现方法及维护策略。通过实际代码示例和清晰的步骤说明,我们将一起探索如何确保软件质量,同时提升开发效率。
22 1
|
14天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
15天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
58 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
3天前
|
JavaScript 安全 编译器
TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法
本文深入探讨了 TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法,并通过实际案例展示了其在项目中的应用效果,旨在提升代码质量和开发效率。
19 6
|
12天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
44 3
|
14天前
|
测试技术 API Android开发
探索软件测试中的自动化框架选择与实践####
本文深入探讨了软件测试领域内,面对众多自动化测试框架时,如何依据项目特性和团队需求做出明智选择,并分享了实践中的有效策略与技巧。不同于传统摘要的概述方式,本文将直接以一段实践指南的形式,简述在选择自动化测试框架时应考虑的核心要素及推荐路径,旨在为读者提供即时可用的参考。 ####
|
18天前
|
测试技术 Android开发 UED
探索软件测试中的自动化框架选择
【10月更文挑战第29天】 在软件开发的复杂过程中,测试环节扮演着至关重要的角色。本文将深入探讨自动化测试框架的选择,分析不同框架的特点和适用场景,旨在为软件开发团队提供决策支持。通过对比主流自动化测试工具的优势与局限,我们将揭示如何根据项目需求和团队技能来选择最合适的自动化测试解决方案。此外,文章还将讨论自动化测试实施过程中的关键考虑因素,包括成本效益分析、维护难度和扩展性等,确保读者能够全面理解自动化测试框架选择的重要性。
33 1