Python--代碼1(接口測試:測試用例從數據庫讀取寫到yaml文件中)

一. 從數據庫中讀取所有接口,並寫入yaml文件mysql

數據庫中的數據存儲格式以下圖:ios

 

import pymysql
import os
import json
# from ruamel import yaml
import yaml

#第一步:從數據庫中取出全部接口記錄存成一個字典
def query(sql):
    con=pymysql.connect(host='192.168.249.152',user='root',password='123456',db='test_api',charset='utf8')#鏈接數據庫
    cur=con.cursor()#獲取遊標
    cur.execute(sql)#執行sql
    list = []
    for id,pathGroup,path,param,method in cur.fetchall():#查詢記錄,fetchall用法參見注釋1
        ever = {
                'pathgroup': pathGroup,
                'path': path,
                'param': param if param == '' else json.loads(param),
                'method': method
                } #將每個接口造成一個字典格式,param若是寫成'param':param的話會有坑(坑1
        #print(ever)

        list.append(ever)#將每個接口字典變成列表元素 坑2
    result={'content':list} #再變成一個大字典存起來,爲了後面寫入yaml文件的是一個字典
    cur.close()
    con.close()
    return result #返回大字典

#第二步:寫入yaml文件

result_yaml=query('select * from t_api')#調用接口將返回的全部數據存起來(參數爲查詢數據庫全部數據)
print(result_yaml)#打印出來看看

a=os.path.dirname(os.path.realpath(__file__))#os.path.dirname返回目錄,os.path.realpath返回絕對路徑
print('a===',a)
yamlpath=os.path.join(a,'testcase.yaml')#os.path.join拼接出yaml文件的路徑

with open(yamlpath,'w',encoding='utf-8') as f:#w是寫入文件,先刪除原文件,再從新建立並寫入
    yaml.dump(result_yaml,f)#yaml.dump把生成的yaml文檔寫到文件裏,yaml.dump接收的第二個參數必定要是一個文本文件或二進制文件

# if __name__=='__main__':
#     query('select * from t_api')

註釋1:sql

fetchall()相關解釋:原文地址:https://www.wukong.com/answer/6591280609824342286/?iid=40708017633&app=news_article&share_ansid=6591280609824342286&app_id=13&tt_from=mobile_qq&utm_source=mobile_qq&utm_medium=toutiao_ios&utm_campaign=client_share數據庫

爲了方便演示,我這裏新建了一個test數據表,有id,university,name這3個字段,主要內容以下:json

查詢數據,這裏主要用到fetchall、fetchone、fetchamany這3個函數,其中fetchall是查詢知足條件的全部記錄,fetchone是查詢知足條件的第一條記錄,fetchamany是自定義查詢知足條件的記錄,測試代碼以下:api

程序運行截圖以下,已經成功查詢出4條記錄:app

 

坑1:函數

這裏的param須要寫成:'param': param if param == '' else json.loads(param),param若是寫成'param':param的話輸出的結果就是post

{'pathgroup': 'arrange', 'path': 'arrange/kanban/getDeptList', 'param': '{'date': '2019-07-12'}', 'method': 'post'}  ,param的value變成了字符串,這樣的話寫入到yaml文件也是個字符串,在後續解析yaml文件的時候不能解析,這裏的value必須是個字典格式,測試

因此寫成了json.loads(param),意思是將字符串轉換成字典格式

坑2:

這裏最開始寫成了:a=list.append(ever),這樣寫是錯誤的,list.append()直接寫就行不須要前面加個變量

相關文章
相關標籤/搜索