Python接口測(cè)試數(shù)據(jù)庫(kù)封裝實(shí)現(xiàn)原理
引言
做接口測(cè)試的時(shí)候,避免不了操作數(shù)據(jù)庫(kù)。因?yàn)閿?shù)據(jù)校驗(yàn)需要,測(cè)試數(shù)據(jù)初始化需要、一些參數(shù)化場(chǎng)景需要等。
數(shù)據(jù)庫(kù)操作框架設(shè)計(jì)
這里主要操作mysql數(shù)據(jù)庫(kù),整體思路:

封裝實(shí)現(xiàn)
具體代碼實(shí)現(xiàn):
import pymysql
import json
class OperateMysql(object):
def __init__(self):
# 數(shù)據(jù)庫(kù)初始化連接
self.connect_interface_testing = pymysql.connect(
"localhost",
"root",
"123456",
"test",
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
# 創(chuàng)建游標(biāo)操作數(shù)據(jù)庫(kù)
self.cursor_interface_testing = self.connect_interface_testing.cursor()
def select_first_data(self, sql):
"""
查詢第一條數(shù)據(jù)
"""
try:
# 執(zhí)行 sql 語(yǔ)句
self.cursor_interface_testing.execute(sql)
except Exception as e:
print("執(zhí)行sql異常:%s"%e)
else:
# 獲取查詢到的第一條數(shù)據(jù)
first_data = self.cursor_interface_testing.fetchone()
# print(first_data)
# 將返回結(jié)果轉(zhuǎn)換成 str 數(shù)據(jù)格式,禁用acsii編碼
first_data = json.dumps(first_data,ensure_ascii=False)
# self.connect_interface_testing.close()
return first_data
def select_all_data(self,sql):
"""
查詢結(jié)果集
"""
try:
self.cursor_interface_testing.execute(sql)
except Exception as e:
print("執(zhí)行sql異常:%s"%e)
else:
first_data = self.cursor_interface_testing.fetchall()
first_data = json.dumps(first_data,ensure_ascii=False)
# self.connect_interface_testing.close()
return first_data
def del_data(self,sql):
"""
刪除數(shù)據(jù)
"""
res = {}
try:
# 執(zhí)行SQL語(yǔ)句
result = self.cursor_interface_testing.execute(sql)
# print(result)
if result != 0:
# 提交修改
self.connect_interface_testing.commit()
res = {'刪除成功'}
else:
res = {'沒(méi)有要?jiǎng)h除的數(shù)據(jù)'}
except:
# 發(fā)生錯(cuò)誤時(shí)回滾
self.connect_interface_testing.rollback()
res = {'刪除失敗'}
return res
def update_data(self,sql):
"""
修改數(shù)據(jù)
"""
try:
self.cursor_interface_testing.execute(sql)
self.connect_interface_testing.commit()
res = {'更新成功'}
except Exception as e:
self.connect_interface_testing.rollback()
res = {'更新刪除'}
return res
def insert_data(self,sql,data):
"""
新增數(shù)據(jù)
"""
try:
self.cursor_interface_testing.execute(sql,data)
self.connect_interface_testing.commit()
res = {data,'新增成功'}
except Exception as e:
res = {'新增失敗',e}
return res
def conn_close(self):
# 關(guān)閉數(shù)據(jù)庫(kù)
self.cursor_interface_testing.close()
if __name__ == "__main__":
# ()類的實(shí)例化
om = OperateMysql()
# 新增
data = [{'id': 1, 'name': '測(cè)試', 'age': 15}, {'id': 2, 'name': '老王', 'age': 10}, {'id': 3, 'name': '李四', 'age': 20}]
for i in data:
i_data = (i['id'],i['name'],i['age'])
insert_res = om.insert_data(
"""
INSERT INTO test_student (id,name,age) VALUES (%s,%s,%s)
""",i_data
)
print(insert_res)
# 查詢
one_data = om.select_first_data(
"""
SELECT * FROM test_student;
"""
)
all_data = om.select_all_data(
"""
SELECT * FROM test_student;
"""
)
print(one_data)
# all_data字符串類型的list轉(zhuǎn)list
print("查詢總數(shù)據(jù):%s",len(json.loads(all_data)),"分別是:%s",all_data)
# 修改
update_data = om.update_data(
"""
UPDATE test_student SET name = '王五' WHERE id = 1;
"""
)
print(update_data)
# 刪除
del_data = om.del_data(
"""
DELETE FROM test_student WHERE id in (1,2,3);
"""
)
print(del_data)
# 關(guān)閉游標(biāo)
om.conn_close()
運(yùn)行結(jié)果:

為了方便演示,先注釋刪除數(shù)據(jù)的sql,再執(zhí)行程序:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python 如何用 Hypothesis 來(lái)自動(dòng)化單元測(cè)試
- Python基于Hypothesis測(cè)試庫(kù)生成測(cè)試數(shù)據(jù)
- python?playwright?庫(kù)上傳和下載操作(自動(dòng)化測(cè)試?playwright)
- Python測(cè)試框架pytest核心庫(kù)pluggy詳解
- python軟件測(cè)試Jmeter性能測(cè)試JDBC Request(結(jié)合數(shù)據(jù)庫(kù))的使用詳解
- python利用faker庫(kù)批量生成測(cè)試數(shù)據(jù)
- 基于python locust庫(kù)實(shí)現(xiàn)性能測(cè)試
- python Hypothesis生成和執(zhí)行大量的測(cè)試用例
相關(guān)文章
使用Python的SymPy庫(kù)解決數(shù)學(xué)運(yùn)算問(wèn)題的方法
這篇文章主要介紹了使用Python的SymPy庫(kù)解決數(shù)學(xué)運(yùn)算問(wèn)題的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03
用Python的線程來(lái)解決生產(chǎn)者消費(fèi)問(wèn)題的示例
這篇文章主要介紹了用Python的線程來(lái)解決生產(chǎn)者消費(fèi)問(wèn)題的示例,包括對(duì)使用線程中容易出現(xiàn)的一些問(wèn)題給出了相關(guān)解答,需要的朋友可以參考下2015-04-04
django和flask哪個(gè)值得研究學(xué)習(xí)
在本篇文章里小編給大家整理的是一篇關(guān)于django和flask哪個(gè)值得研究學(xué)習(xí)內(nèi)容,需要的朋友們可以參考下。2020-07-07
Python實(shí)現(xiàn)向好友發(fā)送微信消息優(yōu)化篇
利用python可以實(shí)現(xiàn)微信消息發(fā)送功能,怎么實(shí)現(xiàn)呢?你肯定會(huì)想著很復(fù)雜,但是python的好處就是很多人已經(jīng)把接口打包做好了,只需要調(diào)用即可,今天通過(guò)本文給大家分享使用?Python?實(shí)現(xiàn)微信消息發(fā)送的思路代碼,一起看看吧2022-06-06
Python實(shí)戰(zhàn)整活之聊天機(jī)器人
這篇文章主要介紹了Python實(shí)戰(zhàn)整活之聊天機(jī)器人,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
python numpy中array與pandas的DataFrame轉(zhuǎn)換方式
這篇文章主要介紹了python numpy中array與pandas的DataFrame轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
導(dǎo)入tensorflow時(shí)報(bào)錯(cuò):cannot import name ''abs''的解決
這篇文章主要介紹了導(dǎo)入tensorflow時(shí)報(bào)錯(cuò):cannot import name 'abs'的解決,文中介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
python神經(jīng)網(wǎng)絡(luò)使用tensorflow構(gòu)建長(zhǎng)短時(shí)記憶LSTM
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)tensorflow構(gòu)建長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)LSTM,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

