一、前言
本文章主要会讲解接口自动化测试中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讲解
系列文章20:【Python自动化测试20】接口自动化测试框架模型搭建
系列文章21:【Python自动化测试21】接口自动化测试实战一_接口概念、项目简介及测试流程问答
系列文章22:【Python自动化测试22】接口自动化测试实战二_接口框架修改及用例优化
系列文章23:【Python自动化测试23】接口自动化测试实战三_动态参数化与数据伪造
接口自动化中操作数据库主要是根据业务层面决定的,部分情况例如查询手机号、或个人信息时需要操作数据库,有时候也有可能需要删除某个内容,通常而言不会这么做罢了。
2.2 接口自动化操作数据库的利弊
""" 利: 1、能够根据我们需要的业务情况来解决一定的业务问题 弊: 1、数据库的操作本身就会让自动化变得慢,需要建立连接 -- 查询 等等 2、数据库本身是一种依赖, 我们能不操作数据库尽可能不操作 """
2.3 Python操作数据库
要操作数据库,需要先进行pymysql库的安装,按照对应语法填写好对应数据即可:
import pymysql
"""
1、连接数据库:输入用户名,密码,地址,端口
2、游标:使用游标读取数据、修改数据(执行sql语句)
3、获取操作结果
4、关闭游标
5、关闭数据库连接
"""
conn = pymysql.connect(user="future",
password="XXXXXX",
host="XX.XX.XX.XX",
port=3306
)
cursor = conn.cursor()
# 执行sql
sql = "SELECt mobile_phone,id,reg_name FROM XXXXXXX.member WHERe mobile_phone = 137XXXXXXXX"
cursor.execute(sql)
# 获取一个结果每条记录用元组表示
res = cursor.fetchone()
print(res)
# 关闭
cursor.close()
conn.close()
输出的数据是元组,元组数据不可修改,我们需要进行类型转换,如要输出字典,需要加上DictCursor:
import pymysql
from pymysql.cursors import DictCursor
"""
1、连接数据库:输入用户名,密码,地址,端口
2、游标:使用游标读取数据、修改数据(执行sql语句)
3、获取操作结果
4、关闭游标
5、关闭数据库连接
"""
conn = pymysql.connect(user="future",
password="XXXXXX",
host="XX.XX.XX.XX",
port=3306
)
cursor = conn.cursor(DictCursor)
# 执行sql
sql = "SELECt mobile_phone,id,reg_name FROM XXXXXXX.member WHERe mobile_phone = 137XXXXXXXX"
cursor.execute(sql)
# 获取一个结果每条记录用元组表示
res = cursor.fetchone()
print(res)
# 关闭
cursor.close()
conn.close()
我们需要进行函数封装,数据库内容也属于公用内容,也可以放入至common包下,函数封装后:
class DBHandler:
def __init__(self, host=setting.db_host, port=setting.db_port,
user=setting.db_user, password=setting.db_pwd):
self.conn = pymysql.connect(user=user,
password=password,
host=host,
port=port,
autocommit=True
)
def query_one(self, sql, cursor_type=DictCursor):
cursor = self.conn.cursor(cursor_type)
cursor.execute(sql)
data = cursor.fetchone()
cursor.close()
return data
def query_all(self, sql, cursor_type=DictCursor):
cursor = self.conn.cursor(cursor_type)
cursor.execute(sql)
data = cursor.fetchall()
cursor.close()
return data
def query(self, sql, one=True, cursor_type=DictCursor):
if one:
return self.query_one(sql, cursor_type)
return self.query_all(sql, cursor_type)
def close(self):
self.conn.close()
# 自己实现上下文管理器
# def __enter__(self):
# return self
#
# def __exit__(self, exc_type, exc_val, exc_tb):
# return self.close()
db_module = DBHandler()
if __name__ == '__main__':
db = DBHandler()
sql = 'select mobile_phone from futureloan.member limit 5'
res = db.query(sql, one=False)
db.close()
print(res)
#
# with DBHandler_2() as db:
# sql = 'select mobile_phone from futureloan.member limit 5'
# res = db.query(sql, one=False)
# print(res)
# 数据库配置项 db_host = "XX.XX.XX.XX" db_port = XXXX db_user = "future" db_pwd = "XXXXXX"
好啦~以上就是本次文章分享的全部内容啦,你学会了吗?希望能给大家带来帮助哦!



