進行接口測試時,我們需要連接到數據庫中,對數據源進行備份、還原、驗證等操作。
Python連接數據庫常見模塊
MysqlDB
python2時代最火的驅動庫。基於C開發,對windows平台不友好。現在已經進入python3時代,基本不再使用
MysqlClient
它是重量級Web開發框架Django中ORM功能依賴工具
Pymysql
純Python實現的驅動,性能比MysqlDb差,但是安裝簡單,容易使用
SQLAlchemy
即支持原生SQL也支持ORM的庫
我們以pymysql為例
01
Pymysql使用方法
安裝方法:pip install pymysql
Pymsyql使用流程
獲取連接
獲取游標 --游標的作用就是用於對查詢數據庫所返回的記錄進行遍歷,以便進行相應的操作
執行SQL語句
關閉游標
關閉連接
代碼實現:
connect =
pymysql.Connect(
host='xxxxx',
port=3306,
user='root',
password='XXXX',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
connect:接收Pymysql.connect方法返回的對象,建立連接對象
pymysql.Connect 建立連接方法
host=XXXX 連接數據庫服務器
port=3306 連接數據庫端口號
password=“xxxxx”:密碼
charset=“utf8mb4”:建立連接的編碼
cursorclass=pymysql.cursors.DictCursor:設置返回數據類型 返回字典
cursor = conn.cursor()
cursor.close()
conn.close()
查詢訂單庫
得到一個游標對象
cursor = connect.cursor()
查詢庫名加表名
mtxshop_trade.es_order
cursor.execute(“SELECT order_id,trade_sn FROM mtxshop_trade.es_order WHERE order_id=47050 OR order_id=47049”)
data = cursor.fetchall() #得到查詢的所有結果
cursor.close()#關閉游標對象
02
日志的基本概念
提到日志,無論是寫框架代碼還是業務代碼,都離不開日志的記錄,他能給我們定位問題帶來極大的幫助,最佳的做法是使用內置的logging模塊, 因為 logging 模塊給開發者提供了非常豐富的功能。
日志級別
日志級別是為了控制打印日志的信息程度的
首先,配置日志模塊時,需要先設置日志模塊的日志等級
例如,如果設置為INFO級別,那麼打印日志用DEBUG就不會輸出日志。
DEBUG
INFO
WARNING
ERROR
CRITICAL
日志輸出模式
輸出到控制台
輸出到文件
日志格式
指定輸出的日志的格式和內容常見的格式有:
%(levelno)s: 打印日志級別的數值
%(levelname)s: 打印日志級別名稱
%(pathname)s: 打印當前執行程序的路徑,其實就是sys.argv[0]
%(filename)s: 打印當前執行程序名
%(funcName)s: 打印日志的當前函數
%(lineno)d: 打印日志的當前行號
%(asctime)s: 打印日志的時間
%(thread)d: 打印線程ID
%(threadName)s: 打印線程名稱
%(process)d: 打印進程ID
%(message)s: 打印日志信息
logging使用流程
第一步:實例化logging模塊
第二步:設置日志等級
第三步:配置日志處理器、日志格式;日志處理器:控制日志的打印模式
第四步:打印日志
01
logging模塊處理流程
接口測試框架實現日志收集功能
編寫日志配置函數代碼
這個函數配置了輸出日志到控制台和文件,並且設置了日志打印格式
def logging_init():
logger = logging.getLogger()
logger.setLevel(logging.INFO)
stream_handler = logging.StreamHandler()
file_handler = logging.handlers.TimedRotatingFileHandler(config.BASE_DIR + “/logs/lagou_log.log”, when=‘h’,
interval=1,backupCount=3, encoding=“utf-8”)
fmt = "%(asctime)s %(levelname)s [%(name)s] [ %(filename)s %(funcName)s % (lineno)d ] %(message)s "
formatter = logging.Formatter(fmt)
stream_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
logger.addHandler(file_handler)
return logger
然後在api. init .py 中調用這個函數,完成日志的初始化
from utils import logging_init
logging_init()
import logging
logging.debug(“測試debug級別的日志打印”) #不會打印
在api. init .py 初始化日志配置的原因:
execute執行script中的用例,script中的用例是調用api 的接口實現接口測試,按照模塊語法,調用模塊時,會自動執行模塊下的 init .py 代碼
後續,只需要在需要打印日志的模塊,導入logging安裝包,就可以輸出我們配置好日志格式和日志等級的日志信息了