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对比 但本章只讲整 ...
随机推荐
- python读取,显示,保存mnist图片
python处理二进制 python的struct模块可以将整型(或者其它类型)转化为byte数组.看下面的代码. # coding: utf-8 from struct import * # 包装成 ...
- 捅娄子了,写个bug被国家信息安全漏洞共享平台抓到了?
摸不了鱼了 2019 年 11 月 26 日,本来应该是无比平静的一天,开开会,改改bug,摸摸鱼之后等着下班.刷着新闻的间隙,手机的消息提示音响了起来,收到了一条邮件,平时收到邮件我都会选择稍后处理 ...
- 基于iSensor的MT9M001C12STM传感器调试总结
iSensor APP 之 摄像头调试 MT9M001C12STM iSensor app 非常适合调试各种摄像头,已测试通过的sensor有: l OV7670.OV7725.OV9650.OV ...
- java web项目war包部署,使用tomcat对指定接口设置身份认证
先简单说一下需求: 将一个基于springboot2.0开发的java web项目打成war包,通过tomcat部署到一台linux服务器上,项目相关的一些图片等资源也按照一定规则放置在服务器构建好的 ...
- 修改IE默认页的指向
方法一: 1.打开IE浏览器 → 单击 工具 → Internet选项 2.填上你要设置的主页网址 3.重启IE浏览器,成功设置主页 方法二: 1.按住键盘"win+r" → 输入 ...
- 【VUE】自定义组件
[VUE]自定义组件 转载: ============================================ ======================================== ...
- 【Feign】自定义配置
[Feign]自定义配置 转载: 自定义配置,如果在同一个工程,注意配置不要和@SpringBootApplication或@ComponentSacan放在用一个包下,就是不要被扫描上 packag ...
- 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener
[Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...
- 105道BAT最新Java面试题(MySQL+Redis+nginx+ookeeper+MongoDB)
MySQL面试题 1. 主键 超键 候选键 外键 2.数据库事务的四个特性及含义 3. 视图的作用,视图可以更改么? 4. drop,delete与truncate的区别 5. 索引的工作原理及其种类 ...
- 如何用Jmeter做接口测试
Jmeter介绍&测试准备: Jmeter介绍:Jmeter是软件行业里面比较常用的接口.性能测试工具,下面介绍下如何用Jmeter做接口测试以及如何用它连接MySQL数据库. 前期准备:测试 ...