Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架
整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发模式
- 主要依赖模块 Unittest、Requests、PyMysql、HTMLReport
- 主要包含以下几个模块:
1. Business:与业务相关的公共模块
- get_login_token:接口自动化过程中需要实时获取token,并将实时获取的token传给下个接口作为请求参数
from Business.url import url_login
import requests, json def login_token(username=11111, password=123456):
"""获取登录后的token""" headers = {'Content-Type': 'application/json;charset=UTF-8'} request_param = {
"username": username,
"password": password
}
response = requests.post(url_login, data=json.dumps(request_param), headers=headers) # 返回JSON中data数据的token
print(response.json()['data']['token'])
return response.json()['data']['token'] if __name__ == '__main__':
login_token()
- headers:头部信息
headers = {
'Content-Type': "application/x-www-form-urlencoded",
'X-Requested-With': "XMLHttpRequest",
'Content-Length': "",
'Connection': "keep-alive"
}
- url:对应的URL地址
erp_url = 'https://www.baidu.com'
2. Common:与业务无关公共模块
- connect_db:连接数据库,并操作数据库
import pymysql # python3用的是pymysql,python2用的是MySQLdb class OperationMysql:
"""
数据库SQL相关操作
""" def __init__(self):
self.conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='test',
passwd='',
db='test',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
self.cur = self.conn.cursor() # 查询一条数据
def search_one(self, sql):
self.cur.execute(sql)
result = self.cur.fetchone() # 只显示一行结果
# result = self.cur.fetchall() # 显示所有结果
return result # 更新SQL
def updata_one(self, sql):
self.cur.execute(sql)
self.conn.commit()
self.conn.close() if __name__ == '__main__':
op_mysql = OperationMysql()
res = op_mysql.search_one("SELECT * from odi_order WHERE order_no='12222'")
print(res)
3.TestCase:测试用例层
- test_case:用例数据
import unittest
from HTMLReport import logger
import requests from Business.url import erp_url class Category(unittest.TestCase):
"""ERP属性接口""" def setUp(self):
self.session = requests.Session()
logger().info("获取会话") def tearDown(self):
self.session.close()
logger().info("关闭会话") def test_type_list(self):
"""get请求方式"""
s = self.session
querystry = {}
r = s.get(erp_url + '/xxx.list', params=querystry)
logger().info(f"返回数据{r.json()}")
self.assertEqual("success", r.json().get("msg"))
def test_pay_success_recommend(self):
"""Post请求方式"""
s = self.session
payload = {
"token": login_token,
"p": "ios",
"v": "5.6.0",
"order_no": ""
}
r = s.post(erp_url + '/xxxxx/aaa', data=payload)
logger().info(f"返回数据:{r.json()}")
self.assertEqual('success', r.json().get('msg'))
4.TestSuite:测试套件封装
- suite_api:测试套件
import unittest
from Test_Case.refactor import test_order def get_suite():
suite = unittest.TestSuite()
loader = unittest.TestLoader() suite.addTests(loader.loadTestsFromTestCase(test_order.Apitests)) return suite
5.Run:主运行文件
import unittest
from Test_Suite import suite_api
import HTMLReport
import time
suite = unittest.TestSuite()
suite.addTests(suite_api.get_suite())
HTMLReport.TestRunner(
title="XXX项目测试报告",
description="测试人员:CesareCheung",
report_file_name=f"testreport",
thread_count=50
).run(suite)
6.框架整体结构图:
Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架的更多相关文章
- Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发接口化框架
整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLRe ...
- 转载:python + requests实现的接口自动化框架详细教程
转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由 ...
- python + requests实现的接口自动化框架详细教程
前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自 ...
- Python+Pytest+Allure+Git+Jenkins接口自动化框架
Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...
- python+unittest+requests+HTMLRunner编写接口自动化测试集
问题描述:搭建接口测试框架,执行用例请求多个不同请求方式的接口 实现步骤: ① 创建配置文件config.ini,写入部分公用参数,如接口的基本url.测试报告文件路径.测试数据文件路径等配置项 [D ...
- excel+requests管理测试用例接口自动化框架
背景: 某项目有多个接口,之前使用的unittest框架来管理测试用例,将每个接口的用例封装成一个py文件,接口有数据或者字段变动后,需要去每个py文件中找出变动的接口测试用例,维护起来不方便,为了便 ...
- Python3+Requests+Excel完整接口自动化框架
框架整体使用Python3+Requests+Excel:包含对实时token的获取 框架结构图 1.------base -------runmethond.py runmethond:对不同的请求 ...
- python+requests接口自动化框架
为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...
- python+request接口自动化框架
python+request接口自动化框架搭建 1.数据准备2.用python获取Excel文件中测试用例数据3.通过requests测试接口4.根据接口返回的code值和Excel对比 但本章只讲整 ...
随机推荐
- XCode项目配置
此设置优先级在playersetting之上,如果为空或者格式不正确或者文件不存在将不会设置,请注意 一.设置面板 二.对应Xcode中设置 1.TeamID 登录苹果开发者网站,查看个人信息,就有 ...
- TypeScript - 泛型
什么是泛型 官方是这样介绍的: 软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性. 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵 ...
- A.Sweet Problem
题目:甜蜜的问题 题意:你有三堆糖果:红色,绿色,蓝色 第一堆有r个糖果,第二堆有g个糖果,第三堆有b个糖果 每天都可以吃两个不同颜色的糖果,找出可以吃糖果的最大天数 分析:先排下序,如果最大堆大于等 ...
- Task 的一些个人见解
Task确实比较好用且优雅 我感觉.NET要成为艺术家... public class TheTask { /// <summary> /// 直接调用是同步方法 /// </sum ...
- 基于iCamera测试mt9m034 1280X960 高动态相机模块小结
基于iCamera测试mt9m034 高动态相机模块小结 首先看看此模块的特性 mt9m034 高动态 CMOS模块 1280*960像素 5.48 V/lux-sec >115db 摄像头模块 ...
- Docker私有仓库搭建与界面化管理
一.关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去. 但是有时候我们的使用场景需要我们拥有一个私有的镜 ...
- PHP 7.4.0发布!一起看看有哪些新特性
PHP 7.4.0 发布了,此版本标志着 PHP 7 系列的第四次特性更新. 看了英文手册后,发现其进行了许多改进,并带来了一些新特性,现在将这些新特性您: 1.Typed Properties 类型 ...
- 4个点说清楚Java中synchronized和volatile的区别
作者 : Hollis 回顾一下两个关键字:synchronized和volatile 1.Java语言为了解决并发编程中存在的原子性.可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如sy ...
- ansible部署apache
Ansible 配置Apache(加粗的字体是要执行的命令) 配置免密登录 [root@localhost ansible]# vim /etc/ansible/hosts //用来配置目标主机 加入 ...
- SpringBoot2基础,进阶,数据库,中间件等系列文章目录分类
本文源码:GitHub·点这里 || GitEE·点这里 一.文章分类 1.入门基础 SpringBoot2:环境搭建和RestFul风格接口 2.日志管理 SpringBoot2:配置Log4j2, ...