Python+Requests接口自动化介绍、协议及环境搭建

前言

软件测试在软件研发过程中起到重要组成部分,是贯穿整个软件研发生命周期,与需求、开发、运维等人员起到沟通的桥梁。其目的是尽早的发现软件研发过程中的各种bug,从而降低软件的修复成本和团队间的沟通成本,提升软件产品的质量。随着互联网时代的发展,软件测试从手工测试逐渐演变成单元测试、接口测试、性能测试、自动化等。

单元测试:软件中的最小可测试单元进行检查和验证 。一般来说,单元测试是开发编写代码中的一个功能、一个函数、一个判断等最小可测单元代码。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个方法(函数)的功能操作。

集成测试:在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。 很多公司在集成测试时,单元测试已经完成的。如果不经过单元测试,则集成测试的结果将会受到很大影响,并且也会加大单元代码合并及运行的错误率。

系统测试:将被测的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素及环境结合在一起测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。

自动化经典的测试分层金字塔图(源于Mike Cohn在2009年的著作《Scrum敏捷软件开发》)。如下图所示:

Python+Requests接口自动化介绍、协议及环境搭建_第1张图片

三层金字塔中,最下层是单元测试,单元测试是自动化测试策略稳固的根基,因此也是金字塔结构的最底层;最上层是用户界面,通常用户界面是脆弱的,测试和修改的经济成本和时间成本较高;中间服务层是为了过渡用户界面和程序单元而设计的,认为所有应用程序都由各种服务组成。通过对服务(接口层面)进行测试,而不是对用户界面进行测试,可以极大缩短时间和成本。关于接口自动化方面的处理可通过三种方式来解决:

①通过代码编写接口测试框架,实现接口自动化测试,其要求测试人员掌握扎实的编程基础;

②借助接口测试工具(Postman/Jmeter/SoapUI等),配合集成工具(Jenkins)实现接口自动化测试持续集成;

③借助开源接口测试( FasterRunner等)平台实现自动化测试。

下面我们通过Python搭建自动化环境来实现接口自动化操作。

本文部分内容引用《接口测试白皮书 》

接口测试基础知识

什么是接口测试

接口测试也叫API(全称:Application Programming Interface 应用程序编程接口),是测试系统间(系统与系统/前后台)接口的一种测试。接口测试主要检测系统间的数据流向以及响应数据(response body)是否正确。

接口测试的原理

测试人员通过程序或测试工具,模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理,再把应答报文发送给客户端,客户端(程序或工具)接收应答报文这一个过程。

接口测试范围

接口测试一般分为两种:①系统功能间<前后端>的内部接口;②系统与系统之间的外部接口(第三方接口)。

  • 项目的所有接口都需要测试吗?

    随着软件产品系统的复杂度越来越高,接口数量越来越多,想完全覆盖所有接口是一件很困难的事情。通常情况下,优先覆盖主流程方面的接口和系统对外的两个方面的接口,系统对外的接口有:系统接收数据方面的接口(获取其它系统接口数据)和系统相关数据被其它系统调用的接口。

  • 接口测试需要测试哪些方面?
    需要关注被测接口的功能是否实现、性能是否达标、安全性是否满足,重点关注接口数据的交互(接口间的关联等)。

接口的协议

接口根据协议的不同可分为以下几类:

  1. 基于HTTP协议(超文本传输协议)、HTTPS(HTTP+SSL安全证书)开发的接口;
  2. 基于TCP协议开发的接口;
  3. 基于WebService协议开发的接口

Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。(Web service引用百度百科介绍)

  1. RESTful接口,简称为REST,其描述了一个架构样式的网络系统,核心是面向资源。REST专门针对网络应用设计和开发方式,降低开发的复杂性,提高系统的可伸缩性。
  2. 等…

环境搭建

安装Python

本文已安装python 3.5版本。详情的安装可见参考:Python 安装及环境变量配置(Windows)

在这里插入图片描述

pip安装requests库

在CMD命令行(DOS窗口)输入命令 pip install requests 进行安装。

pip下载的时候慢,在后面加 -i https://mirrors.aliyun.com/pypi/simple/

pip install requests -i https://mirrors.aliyun.com/pypi/simple/

Python+Requests接口自动化介绍、协议及环境搭建_第2张图片
安装完成后,输入命令pip list 查看已安装的库

pip安装过程中出现的问题

  • pip不是内部/外部命令
    Python+Requests接口自动化介绍、协议及环境搭建_第3张图片

  • 解决方式(一)

    1. 找到python安装目录,进入Scripts目录;
      Python+Requests接口自动化介绍、协议及环境搭建_第4张图片

    2. 在该目录下,按Shift键 + 鼠标右键,在当前位置打开命令窗口(或在路径上直接覆盖输入cmd,回车打开命令窗口)
      Python+Requests接口自动化介绍、协议及环境搭建_第5张图片

    3. 在命令行(DOS)窗口直接安装requests库即可

  • 解决方式(二)

    1. 找到python安装目录,进入Scripts目录,复制Scripts的路径;
    2. 进入本地环境变量设置,找到path环境变量,在开头粘贴路径(python Scripts目录的路径); (不要漏了分号)
      Python+Requests接口自动化介绍、协议及环境搭建_第6张图片
    3. 配置完成后,重启命令行(DOS)窗口,输入命令进行安装requests即可

安装Jenkins

本文已安装Jenkins,这里就不多做介绍,详情可参考:

持续集成之Jenkins安装使用(Windows)

案例代码

# 导入requests库
import requests

# 变量url:存放url地址
url = 'http://ip地址:端口/路径'
# 使用requests发送get请求,将得到的响应结果赋予变量res
res = requests.get(url)
# 打印res响应数据: 响应数据的状态码格式
print(res)
# 打印res响应数据的http状态码
print(res.status_code)
# 打印res响应数据的正文--以文本格式打印
print(res.text)
# 打印res响应数据的正文--以json格式打印
print(res.json())

# 获取验证的URL变量
URL = 'http://ip地址:端口/路径'
# post请求的数据格式:以字典格式{"参数":"值"}传输
data = {
     "username":"***********","authType":"1"}
# 发送post请求
resp = requests.post(url=URL,data=data)
# 打印响应数据--json格式
print(resp.json())

你可能感兴趣的:(python,接口自动化,python,接口自动化测试)