python实现头条项目接口自动化测试(代码片段)

黑马程序员官方 黑马程序员官方     2022-12-07     187

关键词:

目标

  • 1. 熟悉接口自动化测试的流程
  • 2. 能够对一个项目的接口实现自动化测试

接口自动化测试流程

  • 1. 需求分析
  • 2. 挑选需要做自动化测试的功能
  • 3. 设计测试用例
  • 4. 搭建自动化测试环境[可选]
  • 5. 设计自动化测试项目的架构[可选]
  • 6. 编写代码
  • 7. 执行测试用例
  • 8. 生成测试报告并分析结果

项目接口介绍

1. 项目介绍

项目名称:黑马头条

项目描述:黑马头条是一款基于数据挖掘的推荐引擎产品,它为用户推荐有价值的、个性化的科技资讯,提供连接人与信息的新型服务。

项目技术架构:

2. 项目接口分析

分析接口文档...

3. 挑选需要做接口测试的功能

用例设计

1. 单接口的用例设计

2. 业务功能的用例设计

项目搭建

1. 新建项目

项目名称:apiAutoTestHmtt

2. 创建目录结构

 3. 安装依赖包

pip install requests

编写代码

1. 封装接口类

根据用例分析待测功能,按功能模块定义接口类

登录:login.py
频道:channel.py
文章:article.py
收藏:collections.py

2. 编写测试脚本

1. 定义测试脚本文件

登录模块:test_login.py
频道模块:test_channel.py
文章模块:test_article.py
收藏模块:test_collections.py

2. 使用unittest管理测试脚本

3. 执行测试脚本

1. 使用unittest执行测试脚本

2. 调试代码

4. 数据库数据校验

4.1 用例场景

调用收藏文章的接口后,校验数据库中是否插入了对应的收藏记录。

4.2 表结构

CREATE TABLE `news_collection` (
`collection_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
`user_id` bigint(20) unsigned NOT NULL COMMENT '用户ID',
`article_id` bigint(20) unsigned NOT NULL COMMENT '文章ID',
`create_time` datetime NOT NULL COMMENT '创建时间',
`is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否取消收藏, 0-未取消, 1-已取消'
,
`update_time` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`collection_id`),
UNIQUE KEY `user_article` (`user_id`,`article_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户收藏表';

4.3 示例代码

# 收藏
def test_collections(self):
article_id = 1 # 文章id
user_id = 1 # 用户id
# 收藏
response = self.collections_api.collections(article_id)
# 断言响应数据
json_result = response.json()
self.assertEqual("OK", json_result.get("message"))
# 数据库数据校验
conn = pymysql.connect("localhost", "root", "root", "hmtt")
cursor = conn.cursor()
sql = "select collection_id,is_deleted from news_collection where user_id=%s and ar
ticle_id=%s"
cursor.execute(sql, (user_id, article_id))
data = cursor.fetchone()
cursor.close()
conn.close()
self.assertIsNotNone(data)
self.assertEqual(0, data[1]) # 未取消

4.4 封装数据库操作工具类

为了减少代码的冗余,提高测试效率,可以对数据库的相关操作封装成工具类。

示例代码

import pymysql
class DBUtil:
_conn = None # 数据库连接对象
@classmethod
def get_conn(cls):
"""获取数据库连接对象"""
if cls._conn is None:
cls._conn = pymysql.connect("localhost", "root", "root", "hmtt")
return cls._conn
@classmethod
def close_conn(cls):
"""关闭数据库连接"""
if cls._conn:
cls._conn.close()
cls._conn = None
@classmethod
def get_cursor(cls):
"""获取游标对象"""
return cls.get_conn().cursor()
@classmethod
def close_cursor(cls, cursor):
"""关闭游标对象"""
if cursor:
cursor.close()
@classmethod
def get_one(cls, sql):
"""查询一条记录"""
data = None
cursor = None
try:
cursor = cls.get_cursor()
cursor.execute(sql)
data = cursor.fetchone()
except Exception as e:
print("get_one error: ", e)
finally:
cls.close_cursor(cursor)
cls.close_conn()
return data

数据驱动

1. 数据驱动

1.1 定义数据文件

1. 定义存放测试数据的目录,目录名称:data

2. 分模块定义数据文件

登录模块:login.json
频道模块:channel.json
文章模块:article.json
收藏模块:collections.json

3. 根据业务编写用例数据

1.2 测试数据参数化

修改测试脚本,使用parameterized实现参数化

生成测试报告

使用HTMLTestRunner生成测试报告

report_file = "./report/report.html".format(time.strftime("%Y%m%d-%H%M%S"))
with open(report_file, "wb") as f:
runner = HTMLTestRunner(f, title="黑马头条接口自动化测试报告", description="V1.0")
runner.run(suite)

使用python快速搭建接口自动化测试脚本实战总结(代码片段)

本文将介绍如何使用python快速进行http/https接口自动化测试脚本搭建,实现自动请求、获取结果、数据对比分析,导出结果到Excel等功能,包括python的requests、pandas、openpyxl等库的基本使用方法。测试需求介绍通常,... 查看详情

python实现各种加密,接口加解密不说难(代码片段)

Hi,大家好。我们在接口自动化测试项目中,有时候需要一些加密。今天给大伙介绍Python实现各种加密,接口加解密再也不愁。目录一、项目加解密需求分析二、Base64加密三、MD5加密四、 sha1加密五、 secrets加密六、P... 查看详情

python接口自动化之数据驱动(代码片段)

在上一篇Python接口自动化测试系列文章:Python接口自动化之登录接口测试,主要介绍接口概念、接口用例设计及登录接口测试实战。以下主要介绍使用openpyxl模块操作excel及结合ddt实现数据驱动。如果感觉文章很长,... 查看详情

接口测试学习(代码片段)

...开始的http接口测试需求,准备花时间搭建了一个http接口自动化测试框架用于测试后期回归测试,搭建思路框架采用robot和python实现,因为robot中的复杂逻辑实现起来比较繁琐,故选择用python实现, 查看详情

用python实现接口自动化测试并保存测试结果(代码片段)

介绍用Python来做接口自动化测试的好处,我觉得就一点,访问http接口简单,一行代码就行;代码不用写很多,可以把若干接口配置成JSON就行;Python解析之后,将访问结果等数据保存到excel中;大致... 查看详情

实现python接口自动化平台并形成可视化界面(代码片段)

实现Python接口自动化平台并形成可视化界面的具体步骤如下:1.安装必要的Python库,例如Flask、Flask-RESTful、pytest等。2.设计平台的数据结构,例如测试用例、测试任务、测试结果等,可以使用Python的类来实现。3.使用Flask框架开发... 查看详情

基于python+requests的web接口自动化测试框架(代码片段)

之前采用JMeter进行接口测试,每次给带新人进行培训比较麻烦,干脆用Python实现,将代码和用例分离,易于维护。项目背景公司的软件采用B/S架构,进行数据存储、分析、管理工具选择python开发的速度很快ÿ... 查看详情

基于python+requests的web接口自动化测试框架(代码片段)

之前采用JMeter进行接口测试,每次给带新人进行培训比较麻烦,干脆用Python实现,将代码和用例分离,易于维护。项目背景公司的软件采用B/S架构,进行数据存储、分析、管理工具选择python开发的速度很快ÿ... 查看详情

美团接口自动化测试实践(代码片段)

 一、概述1.1接口自动化概述众所周知,接口自动化测试有着如下特点:低投入,高产出。比较容易实现自动化。和UI自动化测试相比更加稳定。如何做好一个接口自动化测试项目呢?我认为,一个“好的”自动化测试项目,... 查看详情

python_接口自动化测试框架(代码片段)

...具备初始化测试数据功能,无法做到真正的接口测试自动化。无法测试加密接口。实际项目中,多数接口不是可以随便调用,一般情况无法摸拟和生成加密算法。如时间戳和MDB加密算法,一般接口工具无法摸拟。... 查看详情

自动化测试工具(代码片段)

作者:Grey原文地址:自动化测试工具自动化测试框架可以用于自动克隆项目编译项目执行项目评分(需要实现自定义接口)性能测试(需要规定在同一个人的电脑上执行所有同学的程序,否则会因为电脑... 查看详情

robotframework+python实现http接口自动化测试框架(代码片段)

...口测试工作中,由于之前犯懒,没有提前搭建好自动化回归测试框架,以至于后期rd每修改一个bug,经常导致之前没有问题的case又产生了bug,所以需要一遍遍回归case,过程一直手工去执行,苦不堪言。... 查看详情

技术分享|接口自动化测试,如何实现多套环境的自动化测试?(代码片段)

...通常会将后台服务部署到多套测试环境。那么在进行接口自动化测试时,则需要将服务器的域名进行配置。使用一套接口测试脚本,通过切换域名地址配置,实现多套环境的自动化测试。实战练习分别准备两套测试环... 查看详情

python自动化脚本(代码片段)

...报告生成包、接口封装、html测试报告。如下:在写接口自动化之前,我们首先得把单个得接口封装好。interface文件夹内封装insetrequests.py#接口classreq(o 查看详情

简陋版:基于python的自动化测试框架开发(代码片段)

...归测试工作量大2.单个接口功能比较简单,容易实现自动化集成,且相对UI更稳定,更能达到监控项目质量的目的3.从前后端分离的角度说,只依赖前端限制并不能满足安全要求优化方案及工具选择:Postman:  ... 查看详情

2023面试自动化测试面试题含答案,建议收藏(代码片段)

1、你做了几年的测试、自动化测试,说一下selenium的原理是什么?我做了五年的测试,1年的自动化测试;selenium它是用http协议来连接webdriver,客户端可以使用Java或者Python各种编程语言来实现;2、什么项目适合做自动化测试?1... 查看详情

pytest接口自动化测试框架|pytest结合二次封装实现接口自动化(代码片段)

视频来源:B站《冒死上传!pytest接口自动化测试框架(基础理论到项目实战及二次开发)教学视频【软件测试】》一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持&#x... 查看详情

python接口自动化之登录接口测试(代码片段)

在上一篇Python接口自动化测试系列文章:Python接口自动化之unittest单元测试,主要介绍单元测试,unittest模块特性、大致流程、源码及实战例子。以下主要介绍接口概念、接口用例设计及登录接口测试实战。 1、什么... 查看详情