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


一. 從數據庫中讀取全部接口,並寫入yaml文件

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

 

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:

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個字段,主要內容如下:

查詢數據,這里主要用到fetchall、fetchone、fetchamany這3個函數,其中fetchall是查詢滿足條件的所有記錄,fetchone是查詢滿足條件的第一條記錄,fetchamany是自定義查詢滿足條件的記錄,測試代碼如下:

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

 

坑1:

這里的param需要寫成:'param': param if param == '' else json.loads(param),param如果寫成'param':param的話輸出的結果就是

{'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()直接寫就行不需要前面加個變量

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM