【Python自动化测试20】接口自动化测试框架模型搭建
文章目录
- 一、前言
- 二、框架搭建流程
- 2.1 项目创建
- 2.2 README文件
- 2.3 .gitignore文件
- 2.4 什么是测试框架?
- 2.5 分层设计
- 2.6 框架搭建
- 2.6.1 公用目录(common)
- 2.6.2 测试用例目录(testcase)
- 2.6.3 测试数据目录(data)
- 2.6.4 测试报告目录(reports)
- 2.6.5 配置文件目录(config)
- 2.6.6 日志存放目录(logs)
- 2.6.7 被测函数目录(funcs)
- 2.6.8 运行文件(run.py)
- 2.7 测试函数
- 2.8 执行文件
- 2.9 测试报告
- 2.10 路径处理
- 2.11 知识小结
一、前言
本文章主要讲解Python接口自动化测试框架模型的搭建,主要介绍如何设计框架,以及基础的框架运行等,除此之外下方有系列文章的传送门,还在持续更新中,感兴趣的小伙伴也可以前往查看,话不多说,让我们一起看看吧~
系列文章:
系列文章1:【Python自动化测试1】遇见Python之美
系列文章2:【Python自动化测试2】Python安装配置及PyCharm基本使用
系列文章3:【Python自动化测试3】初识数据类型与基础语法
系列文章4:【Python自动化测试4】字符串知识总结
系列文章5:【Python自动化测试5】列表与元组知识总结
系列文章6:【Python自动化测试6】字典与集合知识总结
系列文章7:【Python自动化测试7】数据运算符知识合集
系列文章8:【Python自动化测试8】流程控制语句讲解
系列文章9:【Python自动化测试9】函数知识合集
系列文章10:【Python自动化测试10】文件基础操作
系列文章11:【Python自动化测试11】模块、包与路径知识合集
系列文章12:【Python自动化测试12】异常处理机制知识合集
系列文章13:【Python自动化测试13】类、对象、属性与方法知识合集
系列文章14:【Python自动化测试14】Python自动化测试基础与进阶练习题
系列文章15:【Python自动化测试15】unittest测试框架的核心概念与作用
系列文章16:【Python自动化测试16】测试用例数据分离
系列文章17:【Python自动化测试17】openpyxl二次封装与数据驱动
系列文章18:【Python自动化测试18】配置文件解析与实际应用
系列文章19:【Python自动化测试19】日志系统logging讲解
二、框架搭建流程
2.1 项目创建
框架搭建前必定是以一个项目的形式存在的,故此我们需要新建一个项目,你可以通过Open
打开原有项目的一个包,以此来独立成一个项目,也可以直接使用New Project
来创建一个新项目。
2.2 README文件
在任何一个项目中,我们都可以看到README这个文件,README文件是一个项目的说明文档,其中会包括基础的文件说明、框架搭建及维护的作者,框架认知、框架体系、框架结构、框架作用、项目说明、代码使用规范和注意事项等内容,具体内容通常依据个人或项目需要进行文件说明,文件可以采用md形式,也可以采用txt形式,可以附上一些说明,例如:
2.3 .gitignore文件
通常而言,我们项目中的代码需要进行版本控制,行业中常见的是svn与git,.gitignore文件用于git版本控制,而.gitignore文件的作用是:将特定的文件移除,不会进入至版本控制系统当中,不会进行上传。
比如代码运行所产生的缓存文件,这些缓存文件大多数会放入至__pycache__文件夹中,故此我们可以选择该文件夹,不纳入版本控制系统。还有项目创建所生成的,idea/文件夹,我们也可以不纳入版本控制。
在真实项目中需要特别注意,涉及到敏感数据,绝对不要放入至版本控制当中,例如测试账号、数据库地址等等,这样会暴露项目内容,严重会追究法律责任,如果你是在看本人文章的读者且正在使用公司项目实战,请务必小心!
不纳入版本控制的做法很简单,只需要在.gitignore文件中添加对应的文件夹或文件即可,添加一个后并换行可添加第二个,则代表该文件或文件夹不纳入版本控制,后续的具体内容有兴趣大家可以继续了解。
2.4 什么是测试框架?
框架在生活中也能够比较常见,例如建造一座高楼大厦时,我们需要固定好这个大楼的外层结构,确保建造时大楼是笔直的,确保不会晃动,这就是高楼大厦的框架,而房屋的室内室外等均属于填充内容。
测试框架也是如此,我们需要搭建起一个自动化的测试框架,可重复设计和利用的内容,写的代码就是在进行框架填充,代码中会包括:
"""
工具、组件。-- 专门处理excel的工具、记录logger日志的工具、生成日志的工具等等
"""
框架即意味着规则、规矩,任何人使用框架不能够违背,框架没有标准答案,只要你自己是框架的设计者,那么就是自己掌握话语权,好比我们在导入其他人所写的框架时,也必须遵守它们框架的语法、规则。
2.5 分层设计
什么是分层设计?分层设计的概念是如何进行模块与包的划分,每一个目录就好比一个部门,各司其职,最后的结果就会接近于完美,而独立划分就是分层设计的思想与理念。
为什么需要进行分层设计?相信大家通过下图能够有基本概念,分层设计就是为了更好的进行框架整合、代码管理与维护,在某个"目录"出现异常时,我只需要对特定的"目录"进行管理即可有效解决问题,而不会对其他目录进行牵连。
"""
框架结构
- common 公共方法目录
- testcase 测试用例目录
- data 测试数据目录
- reports 测试报告目录
- config 配置文件目录
- logs 日志系统目录
- funcs 被测函数目录
- run.py 项目启动文件"""
2.6 框架搭建
2.6.1 公用目录(common)
新建一个Python package
,命名为common
,之所以我们要创建Python包而不是一个文件夹的主要原因是Python package
中有__init__
,如果没有这个文件,可能会在导入文件时失败。故此选择Python package
。通常而言,如果这个文件夹里有Python文件,那么我们会使用Python package
进行创建。
公用目录是通用的代码内容,可以理解成无论该框架如何进行移动、修改,公用目录内容均可以保持不变且在其他项目中,公用目录的内容可以完全复制过去进行使用。
2.6.2 测试用例目录(testcase)
testcase
中存放的主要是自动化测试用例代码,里面包括各类的函数,因为存在py文件,故此我们需要Python package
新建。
2.6.3 测试数据目录(data)
data
中主要存放的是测试数据,数据可以是Excel的形式,也可以是Python模块的形式,故此我们这里的创建还是使用Python package
。
2.6.4 测试报告目录(reports)
测试报告的存放路径在reports
,最终的测试报告不是Python模块,大多数是以html的方式存在的,在网页中可展示基础的数据信息和图表类信息,故此我们在创建时只需要建普通的文件夹即可,而不需要Python package
。
2.6.5 配置文件目录(config)
配置文件目录为config
,可能会包括数据库地址、用户名密码等常见内容,配置文件有可能会存在Python模块,我们仍然选用Python package
。
2.6.6 日志存放目录(logs)
日志存放目录会存放关于程序运行的日志内容,同样使用Python package
创建。
2.6.7 被测函数目录(funcs)
被测函数目录主要是用于Python函数的代码存放,存放开发的Python函数文件,使用Python package
创建。
2.6.8 运行文件(run.py)
在顶级目录创建Python文件,名为run
,当执行run.py
时则会执行所有的测试用例,主要起到程序运行作用。
2.7 测试函数
在funcs
下创建login.py
,完成被测函数的填写,在testcase
下创建test_login
,补充一条测试用例:
"""login.py 被测函数"""
def login(username=None, password=None):if username is None or password is None:return {"code": 400, "msg": "用户名或密码为空" }if username == "萌笑天" and password == "123456":return {"code": 200, "msg": "登录成功" }return {"code": 300, "msg": "用户名或密码错误" }
""" test_login.py 测试用例"""
import unittest
from funcs.login import loginclass TestLogin(unittest.TestCase):def test_login_success(self):username = "萌笑天"password = "123456"expected = {"code": 200, "msg": "登录成功" }actual = login(username, password)self.assertEqual(expected, actual)
如上图所示,执行结果为一条测试用例,耗时0.003s,测试通过。代表流程已经走通了。
2.8 执行文件
在run.py
添加执行代码,并预备测试报告生成
import unittest
from unittestreport import TestRunner
from datetime import datetimesuite = unittest.defaultTestLoader.discover("testcase")# 当前时间
data_str = str(datetime.now().strftime("%Y-%m-%d__%H-%M-%S"))
# 测试报告名称
reports_name = data_str + "项目框架演示测试报告.html"runner = TestRunner(suite,tester="萌笑天",report_dir="reports",filename=reports_name)runner.run()
2.9 测试报告
文件输出到了reports:
上半部分展示了一个基本的数据汇总,用例的总数、成功失败、错误等用例数量的具体数值,但这非实战阶段,故此测试用例只有1条演示的用例
中间的部分会有一个图表,图表的形式呈现上述的数据
最下层是详细信息,可以查看哪个类、哪个方法测试通过还是失败,可查看详情,也支持结果的筛选:
2.10 路径处理
我们在项目中还需要使用到路径处理,有些时候我们需要读取对应的路径来获取我们想要的文件或数据,那么需要使用到os路径模块,此处不过多的解释,大家可以先行简单了解,在后续的实战阶段中会重点讲解。
import os
# 获取当前文件路径
current_path = os.path.abspath(__file__)# 获取config文件夹路径
config_dir = os.path.dirname(current_path)# 项目根目录
root_dir = os.path.dirname(config_dir)# data 目录
data_dir = os.path.join(root_dir, "data")# xlsx文件目录
case_path = os.path.join(data_dir, "cases.xlsx")
2.11 知识小结
"""
框架执行:
第一步:框架设计、模块
第二步:在cases里面写自动化测试用例
第三步:在run.py收集测试用例,生成测试报告后续实战阶段讲解:
第四步:封装通用的测试工具,公共代码
第五步:在用例当中调用log变量以增加日志
第六步:实现excel的数据驱动
"""
好啦~以上就是本次文章分享的全部内容啦,你学会了吗?希望能给大家带来帮助哦!
【Python自动化测试20】接口自动化测试框架模型搭建相关推荐
- Python+Pytest+tox 接口自动化测试框架
目录 前言: 1. 该框架重构自之前的框架 2. 目录截图 一.tox简介和使用介绍 1. tox简介 2. 配置文件tox.ini 二.框架搭建 1. 封装接口请求 2. 配置接口信息 3. 维护测 ...
- 通过 YAPI + Python Flask 实现接口自动化测试
背景 公司目前主打两款陌生人社交产品,暖聊和 CP,两款产品都有 Android 和 iOS 端.暖聊涵盖了音视频匹配,交友大厅,聊天室,视频直播,广场,家族,IM 消息和任务中心八大模块,共计 84 ...
- Python之flask结合Bootstrap框架快速搭建Web应用
目录 前言 安装bootstrap扩展 模板的继承 总结 前言 Flask是一个基于Python开发,依赖jinja2模板和Werkzeug WSGI服务的一个微型框架.Werkzeug用来处理Soc ...
- python+requests+pytest 接口自动化框架(一)
目录 一.Pytest详解以及常用的插件安装 二.Pytest默认的测试用例的规则 三.Pytest用例运行方式以及参数 1.命令行模式运行 命令:pytes 2.主函数模式运行 3.基于pytest ...
- python+requests+pytest 接口自动化框架(四)
目录 一.requests库简介 二.requests库常用方法 三.request()返回的response对象 四.实战案例 post(url, data=None, json=None, **k ...
- Python+unittest+requests 接口自动化测试框架搭建 完整的框架搭建过程 实战
一.Python+unittest+requests+HTMLTestRunner 完整的接口自动化测试框架搭建_00--框架结构简解 首先配置好开发环境,下载安装Python并下载安装pycharm ...
- 浅谈Python+requests+pytest接口自动化测试框架的搭建
框架的设计思路 首先要明确进行接口自动化需要的步骤,如下图所示: 然后逐步拆解需要完成的工作: 1)了解分析需求:了解接口要实现的功能 2)数据准备:根据开发文档确定接口的基本情况,知晓接口的url. ...
- 用robot framework + python实现http接口自动化测试框架
前言 下周即将展开一个http接口测试的需求,刚刚完成的java类接口测试工作中,由于之前犯懒,没有提前搭建好自动化回归测试框架,以至于后期rd每修改一个bug,经常导致之前没有问题的case又产生了 ...
- python接口测试_Python接口自动化测试框架实战开发(一)
目录 一丶叙述 二丶接口基础知识 三丶接口测试工具 四丶Fiddler的使用 五丶unittest使用 六丶mock服务入门到实战 七丶接口自动化框架设计到开发 一丶叙述 1.项目介绍 整个项目分为四 ...
最新文章
- 系统学习NLP(三)--NLP入门综述
- css的repaint和reflow
- mac 上搭建gitlabel_在Mac OS X中用Docker部署GitLab
- 年少成名的我并没有放弃自己,谁敢说她\他文章比我写的好?!,不服来战!...
- 《c语言从入门到精通》看书笔记——第13章 预处理
- python和c#哪个简单-最近学习 Python 的一些感触 (对比 C#)
- 为什么感觉每年手机都在升级CPU,但始终都会卡顿?
- 循环赛日程安排(构造、分治)
- WebStorm——最智能的Javascript IDE
- fedora 主题美化
- html页面改成wap页面,wap网页怎么制作 这五大常见问题你要了解一下了!
- fanuc机器人与示教器配对_FANUC机器人示教器维修
- 红米2刷android4.4,【图片】红米2三网通刷CyanogenMod CM11 Android 4.4.4_红米2吧_百度贴吧...
- 转载:domain adaption
- Java并发编程与技术内幕:ThreadFactory、ThreadLocal
- matlab ssd检测,基于SSD神经网络的违章停车车辆实时检测方法与流程
- linux 摄像头 音频,调用宇视摄像机SDK获取IPC的音视频码流
- 全网19套超热门表情包,小狗头、国王排名等我全部整理来了
- iphone 分享到twitter
- ubuntu18系统支持中文