目录
前言
一、数据驱动
二、yaml语法
三、读取yaml
四、测试用例数据驱动
Python全栈自动化测试资料领取
五、接口自动化测试框架搭建。基于:python+requests+pytest+allure实现
(1)接口自动化测试框架需要解决的问题
(2)接口自动化测试框架目录结构
(3)日志监控文件的信息
(4)搭建具有企业Logo的定制化报告。
接口测试天生是为高复杂性的平台带来高效的缺陷检测和质量监督能力,平台越复杂,系统越庞大,接口测试的效果越明显。
总的来说,接口测试是保证高复杂性系统的质量和低成本的经济利益的最佳方案,它主要体现在如下三个方面:
1、节省了测试成本
2、接口测试是站在用户的角度对系统接口进行全面高效持续的检测。
3、当系统复杂度和体积越大,接口测试的成本就越低,相对应的,效益产出就越高。
接下来就来带你实现接口自动化测试的教程!
基于:python+requests+pytest+allure实现
什么是数据驱动?
在接口测试中,测试用例可能有上百条,如果将用例全部写在代码中,一旦需要修改,将会消耗大量的时间,不容易维护。所以,我们就要测试数据,或者测试用例存储到文件中,用代码读取文件获取数据,实现数据驱动。
数据驱动分为两种:
1、参数的数据驱动
2、用例的数据驱动
数据格式的选择:
Excel |
生产数据方便,但是是二进制文件,不利于版本管理。 |
yaml | 格式完备,格式简单。 |
csv | 可以使用Excel,文本格式方便管理。 |
yaml | 格式完备,格式简单,可注释。 |
xml | 格式完备,冗长复杂 |
json | 格式完备,格式死板,不能写注释。 |
经以上总结,选择yaml 管理测试用例。
YAML是一种人性化的数据序列化语言,可以配合目前大多数编程语言使用。
YAML 的语法比较简洁直观,特点是使用空格来表达层次结构,其最大优势在于数据结构方面的表达,所以 YAML 更多应用于编写配置文件,其文件一般以 .yaml 为后缀。
它的基本语法规则如下:
YAML 支持的数据结构有三种:
对象:animal:pets ,也可以写成:hash:{name:Steve, foo: bar}
数组:
- Cat
- Dog
- Goldfish
也可写成:列表嵌套列表
-
- Cat
- Dog
- Goldfish
字典与列表嵌套:
-
id:login_02
yaml.load和safe_load()
两者区别:
safe_load()可以解析简单的数据结构,而且比较安全,load可以解析比较复杂的数据结构,通常一般使用的最多的还是load()
-
id: login_01
title: 登录成功
url: member/login
method: POST
request_data: {"mobile_phone": "17866554324","pwd":"188888"}
expect: {"code":0,"msg":"OK"}
读取yaml
def read_yaml(self):
with open(self.filename, encoding='utf-8') as fs:
# 避免报警告:yaml.FullLoader
data = yaml.load(fs, Loader=yaml.FullLoader)
return data
众所周知,目前市面上大部分的企业实施接口自动化最常用的有两种方式:
1.基于工具类的接口自动化,如:
Postman+Newman+Jenkins+Git/svn
Jmeter+Ant+Jenkins+Git/svn
2.基于代码类的接口自动化,如:
Python+Requests+Pytest+Allure报告定制
经上面介绍,可以看出来是要实现基于代码类的接口自动化测试。那具体怎么实现呢。请接着往下看。
接口自动化离不开接口自动化框架的搭建,在大部分测试人员眼中只要沾上“框架”,就感觉非常神秘,非常遥远。
主要是因为大部分的测试人员代码能力比较薄弱;废话不多说:看效果:
1.接口的基本信息使用Yaml来保存,Yaml比Excel更方面,格式更清晰。
2.不同的传参方式(get,post,put,delete),以及不同的参数传递(传键值对,传Json数据,传文件)等。
3.接口关联如何处理。(即上一个接口的返回值作为下一个接口的参数)
4.断言(判断预期结果和实际结果是否一致)
5.数据驱动(本框架使用CSV文件实现)
6.日志监控,异常处理以及基础路径的配置。(框架的键全性)
7.框架的扩展性,这个至关重要,比如:有些接口参数必须加随机数的情况。(本框架使用的热加载的方式。)
(1)Common文件夹是公共封装文件:如:日志模块,分析Yaml模块,请求封装模块,Yaml操作模块等。
(2)Data文件夹用于存放数据驱动的CSV文件;
(3)Logs文件夹用于存放日志文件;
(4)Reports用于存放报告文件(基于Allure生产的定制化的报告)
(5)Temp用于存放临时文件
(6)TestCases用于存放测试用例文件
(7)all.py总执行文件,config.yaml配置文件…
日志监控是每个框架必备的,用于监控每个接口的数据以及返回接口以及报错信息。
这个日志有点详细啊,包括了接口名称,请求方式,请求路径,请求头,请求参数,文件上传,预期结果,实际结果以及接口是否请求成功和失败。