本文章主要會講解接口自動化測試中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】接口自動化測試實戰三_動態參數化與數據偽造
接口自動化中操作數據庫主要是根據業務層面決定的,部分情況例如查詢手機號、或個人信息時需要操作數據庫,有時候也有可能需要刪除某個內容,通常而言不會這麼做罷了。
""" 利: 1、能夠根據我們需要的業務情況來解決一定的業務問題 弊: 1、數據庫的操作本身就會讓自動化變得慢,需要建立連接 -- 查詢 等等 2、數據庫本身是一種依賴, 我們能不操作數據庫盡可能不操作 """
要操作數據庫,需要先進行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"
好啦~以上就是本次文章分享的全部內容啦,你學會了嗎?希望能給大家帶來幫助哦!