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': "124",
'Connection': "keep-alive"
}
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='111111',
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)
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": "111111"
}
r = s.post(erp_url + '/xxxxx/aaa', data=payload)
logger().info(f"返回数据:{r.json()}")
self.assertEqual('success', r.json().get('msg'))
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
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)
原文链接:https://blog.csdn.net/weixin_42760923/article/details/103505791
Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发接口化框架的更多相关文章
- Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架
整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...
- 接口自动化-python unittest+requests+HTMLrunner
从2015年毕业入行软件测试,快满4年了,之前技术分享都在百度贴吧上面,现在正式开始在博客中记录工作技术,努力成长,加油 接口测试的步骤1.组装好该接口需要的参数数据2.使用get或post附带参数数 ...
- python+unittest+requests+HTMLRunner编写接口自动化测试集
问题描述:搭建接口测试框架,执行用例请求多个不同请求方式的接口 实现步骤: ① 创建配置文件config.ini,写入部分公用参数,如接口的基本url.测试报告文件路径.测试数据文件路径等配置项 [D ...
- python+unittest+requests实现接口自动化
前言: Requests简介 Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 ...
- 接口自动化框架(Pytest+request+Allure)
前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 接口自动化包含2个部分,功能性的接口自动化测试和并发接口自动化测试. 本次文章着重介绍第一种, ...
- python版接口自动化测试框架源码完整版(requests + unittest)
python版接口自动化测试框架:https://gitee.com/UncleYong/my_rf [框架目录结构介绍] bin: 可执行文件,程序入口 conf: 配置文件 core: 核心文件 ...
- 转载:python + requests实现的接口自动化框架详细教程
转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由 ...
- python+requests接口自动化测试框架实例详解教程
1.首先,我们先来理一下思路. 正常的接口测试流程是什么? 脑海里的反应是不是这样的: 确定测试接口的工具 —> 配置需要的接口参数 —> 进行测试 —> 检查测试结果(有的需要数据 ...
- python+requests接口自动化测试框架实例详解
python+requests接口自动化测试框架实例详解 转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...
随机推荐
- head、tail 命令和实时(real-time)更新
head.tail 命令和实时(real-time)更新 head filename: 输出 filename 文件的前10项 tail filename: 输出 filename 文件的后10项 即 ...
- Raspbian 在虚拟机上运行,运行Flask,供宿主机访问
Raspbian 在虚拟机上运行,启动Flask,供宿主机访问 参考ref 1, 在virtualbox上跑起来Raspbian OS 参考ref 2, 在Raspbian上安装并运行Falsk, 注 ...
- Linux进程管理工具vmstat,iostat,pmap
一查看内存的工具——vmstat (一)vmstat的介绍 vmstat vmstat是Virtual Memory Statistics(虚拟内存统计)的缩写 利用vmstat命令可以对操作系统的报 ...
- 微信小程序相关操作
显示用户基本信息 在微信小程序中,经常会碰到需要展示微信用户的基本信息,如果只是为了显示用户信息,最简单有效的办法是使用open-data,这是微信小程序内置的用于展示微信开放数据的组件,通过改变ty ...
- Critical Links
UVA 796 Critical Links http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82833#overview 题目大意:给你一 ...
- HTMLTestRunner优化:带截图、饼图、失败重跑
github地址:https://github.com/yoyoketang/sele_project_th9
- GET和POST的数据传递到底有何区别?
1. GET和POST与数据如何传递没有关系 GET和POST是由HTTP协议定义的.在HTTP协议中,Method和Data(URL, Body, Header)是正交的两个概念,也就是说,使用哪个 ...
- FFT&NTT数学解释
FFT和NTT真是噩梦呢 既然被FFT和NTT坑够了,坑一下其他的人也未尝不可呢 前置知识 多项式基础知识 矩阵基础知识(之后会一直用矩阵表达) FFT:复数基础知识 NTT:模运算基础知识 单位根介 ...
- QTP 通过URL地址下载文件到本地(转)
While automation, you may come to situations where you need to need to download a file on clicking a ...
- MySQL数据库时区问题导致java程序无法连接数据库
转载自https://blog.csdn.net/man_zuo/article/details/81027934 先把报错信息贴上, The server time zone value '???ú ...