04 案例:如何把流程化的测试脚本抽象为测试框架?

简介: 04 案例:如何把流程化的测试脚本抽象为测试框架?

为什么要开发自己的测试框架?


之前,我们说到了用Postman 来完成接口测试,但随着你的接口测试项目逐渐增加,你会发现越来越难以管理它的脚本,虽然测试工具导出的测试脚本也可以存放到代码仓库,但   是,如果只是通过代码来查看是很难看懂的,你必须用原来的测试工具打开,才能更容易看懂原来的脚本做了什么样的操作。


搭建测试框架,不要纠结于技术选型

在做接口测试脚本开发的技术选型上,我更建议你根据自己的技术实力和技术功底来选择,而不要以开发工程师的技术栈来选择。

 

搭建前的准备工作


我相信现在你已经准备好,和我一起完成今天的内容了,但在开工之前,我要先把一些基础知识简单介绍给你。我们今天会用到 Python 的一个第三方 HTTP 协议支持库 requests,它可以让我们在和HTTP 协议打交道时更轻松;requests 项目的描述是“HTTP for Humans”,由此可见, 这会是一个人见人爱的 HTTP 协议库。你可以通过下面这个命令,完成 requests 的安装:


pip install requests



# Python代码中引入requests库,引入后才可以在你的代码中使用对应的类以及成员函数import requests# 建立url_index的变量,存储战场的首页url_index='http://127.0.0.1:12356/'# 调用requests类的get方法,也就是HTTP的GET请求方式,访问了url_index存储的首页URL,返回结果response_index = requests.get(url_index)# 存储返回的response_index对象的text属性存储了访问主页的response信息,通过下面打印出来print('Response内容:' + response_index.text)


第一个接口的单接口测试脚本如下,我在代码中做了详细的注释,你既可以复制出去直接运行,也可以通过注释看懂代码的作用。这样,你就完成了一个无参数的、GET   访问的验证工作。



# 定义一个common的类,它的父类是objectimport requests
class Common(object):  # common的构造函数    def __init__(self, url_root):  # 被测系统的跟路由        self.url_root = url_root  # 封装你自己的get请求,uri是访问路由,params是get请求的参数,如果没有默认为空
    def get(self, uri, params=''):  # 拼凑访问地址        url = self.url_root + uri + params  # 通过get请求访问对应地址        res = requests.get(url)  # 返回request的Response结果,类型为requests的Response类型        return res  # 封装你自己的post方法,uri是访问路由,params是post请求需要传递的参数,如果没有参数这里为        def post(self, uri, params=''):  # 拼凑访问地址        url = self.url_root + uri        if len(params) > 0:            # 如果有参数,那么通过post方式访问对应的url,并将参数赋值给requests.post默认参数data            # 返回request的Response结果,类型为requests的Response类型            res = requests.post(url, data=params)        else:            # 如果无参数,访问方式如下            # 返回request的Response结果,类型为requests的Response类型            res = requests.post(url)            return res


通过改造 Common 类的构造函数,这个类已经变成一个通用类了,无论是哪一个项目的接口测试,都可以使用它来完成 HTTP 协议的接口验证了。我相信现在你已经掌握了测试框架的形成过程,就如下图所示,测试框架的形成是在撰写大量测试脚本的过程中不断抽象封装出来的,然后,再用这个不断完善的框架,改写原有的测试脚本。循环往复这个过程,你就会慢慢获得一个独一无二的、又完全适合你工作的接口测试框架。


其实到这里,我们上面说的只能算是一个调试代码,还不能算是一个测试框架。上面这些代码所有的返回值都打印到控制台后,为了完成接口测试,你需要时时刻刻看着控制台,这还不能算是自动化,只能说是一个辅助小工具。在这里,你应该让全部测试结果都存储到测试报告里面,同时通过一个测试驱动框架来完成各个模块的驱动,这也是为什么你在学习任何一种框架的时候,总会遇见类似  Java  的JUnit、Python 的 Unittest 的原因,因此,上面的 Common 类还需要和 Python 的unittest 一起使用,才算是一个完美的测试框架。至于你自己的 Common 类怎么和测试驱动框架相结合,这部分内容就留给你在未来的接口测试工作中,自己去学习并完成了。


总结


今天,我们一起学习了一个测试框架的诞生过程。测试框架就是在你测试脚本中不断抽象和封装得来的。今天我们课程的内容充斥着各种代码,如果你的代码基础稍微比较薄弱,并没有完全记住上面的内容,那么我希望你记住从测试脚本到测试框架的转化过程:

 

1. 不断撰写测试脚本,所有的抽象和封装都是站在已有的测试脚本基础之上的;

2. 多观察已经写好的测试脚本,找出其中的重叠部分,最后完成封装;


3. 以上两步是一个不断循环又循序渐进的过程,你要在你的工作中始终保持思考和警惕,发现重复马上进行框架封装。

 

最后我想和你强调的是,测试框架的封装和抽象过程并不是一蹴而就的,它是靠一点一点的积累得来的,因此,你要通过自己的实践,慢慢积累和完善你的测试框架,而不要妄想一次就能有一个完善的测试框架。我相信,当你通过写脚本完成整个项目的接口测试后,你一定会得到一个完美的测试框架。

相关文章
|
4天前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
10天前
|
算法 测试技术 API
测试使用 SenseVoice 的流程
8月更文挑战第10天
48 8
|
8天前
|
IDE 测试技术 持续交付
Python自动化测试与单元测试框架:提升代码质量与效率
随着软件行业的发展,代码质量和效率变得至关重要。自动化测试与单元测试是保证质量、提升效率的关键。Python凭借其简洁强大及丰富的测试框架(如Selenium、Appium、pytest和unittest等),成为了实施自动化测试的理想选择。本文将深入探讨这些框架的应用,帮助读者掌握编写高质量测试用例的方法,并通过持续集成等策略提升开发流程的效率与质量。
27 4
|
8天前
|
Web App开发 IDE 测试技术
天呐!当揭开 Selenium 自动化测试框架的神秘面纱,设计与实现令人瞠目!
【8月更文挑战第12天】Selenium 是一强大自动化测试框架,用于Web应用测试。它含WebDriver、IDE和Grid等工具,支持Chrome、Firefox等浏览器。可通过编程模拟用户交互验证应用功能。例如使用Python结合Selenium WebDriver编写自动化测试脚本,实现打开网页、操作元素及断言等功能。还可结合测试框架和Selenium Grid提升测试效率和并行执行能力。
20 1
|
14天前
|
测试技术
软件测试中的心理学:如何优化测试流程
【8月更文挑战第6天】本文深入探讨了软件测试过程中的心理学因素,揭示了测试人员的心理动态对测试效率和质量的影响。通过分析测试人员的压力源、动机以及团队间的沟通问题,提出了一系列改善策略,如建立积极的反馈机制、提供持续的职业培训和优化工作环境等,旨在提升软件测试的整体效能。文章最后提出一个开放性问题,邀请读者思考如何在不断变化的技术环境中维持测试团队的心理健康和动力。
|
14天前
|
人工智能 测试技术 持续交付
探索自动化测试框架的演进与实践
【8月更文挑战第6天】 随着软件行业的快速发展,自动化测试已经成为保障软件质量的关键手段。本文将深入分析自动化测试框架的发展脉络,从早期的线性脚本到现代的模块化、数据驱动和关键字驱动的框架,再到最新的基于AI的智能测试工具。文章还将探讨如何在实际工作中有效实施这些框架,以及在面对新技术时如何保持测试策略的灵活性和前瞻性。
|
17天前
|
存储 数据管理 jenkins
自动化测试框架的搭建与实践
【8月更文挑战第3天】随着软件行业的迅猛发展,自动化测试已成为保证软件质量的重要手段。本文将介绍如何搭建一个高效的自动化测试框架,并通过实际代码示例展示其应用。我们将探讨框架设计的核心原则、工具选择和脚本编写的最佳实践,以及如何通过持续集成实现自动化测试流程的优化。
|
17天前
|
敏捷开发 Web App开发 jenkins
自动化测试框架的搭建与实践
【8月更文挑战第3天】在软件开发过程中,自动化测试已成为提高软件质量和开发效率的关键。本文将深入讨论如何搭建一个高效且可靠的自动化测试框架,包括工具选择、环境配置、脚本编写和执行策略等。通过实际案例,我们将展示框架的具体实施过程,并分析其在真实项目中的表现和效益。
26 1
|
3天前
|
缓存 Java Maven
SpringCloud基于Eureka的服务治理架构搭建与测试:从服务提供者到消费者的完整流程
Spring Cloud微服务框架中的Eureka是一个用于服务发现和注册的基础组件,它基于RESTful风格,为微服务架构提供了关键的服务注册与发现功能。以下是对Eureka的详细解析和搭建举例。
14 0
|
5天前
|
JSON 测试技术 Go
Go 单元测试完全指南(一)- 基本测试流程
Go 单元测试完全指南(一)- 基本测试流程
7 0

热门文章

最新文章