一. 背景
公司又要做一個新項目,是一個合作型項目,我們公司出web展示服務,合作夥伴線下提供展示資料。
而且本次項目是資料統計展示為主要功能,并沒有研發對應的資料接入接口,所有展示資料源均來自資料庫查詢,
是以驗證資料沒有别的入口,隻能通過在資料庫寫入資料來進行驗證。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInVGcq5iNwcjNmRmY0MDN0UWL5EGZ40SMxIWZtITM5IWLxIzNwQmMjNzLcRnblRnbvN2Lc12bj5yZtlWZjVjLxADcvw1LcpDc0RHaiojIsJye.jpeg)
二. 工具
Python+mysql
三.前期準備
前置:當然是要先準備好測試方案和測試用例,在準備好這些後才能目标明确将要開發自動化小工具都要有哪些功能,避免走彎路
3.1 跟開發溝通
1)确認資料庫連接配接方式,庫名 ;
2)測試所涉及到的表名;
3)每個表是對哪部分業務造成影響;
4)表之間的關聯關系,同業務子產品之間的不同表之間是否有關聯字段;
5)表中個字段資料是否有特殊來源,如使用者ID、廠商名稱一類與業務有一定關聯程度的字段,一定要确認好是可以随機生成的 還是 需要從指定表中擷取字段
3.2 設計小工具最終要實作的效果
我設計這個小工具就希望它可以完成兩件事情
1) 生成sql語句,并且能寫入進入mysql資料庫
2) 資料我寫入sql的統計結果,友善使用它直接與頁面結果進行比對
3.3 給自己加個油!我一定可以的!
四.開始程式設計
***因為代碼内實際業務邏輯比較強,是以下面隻寫出一些示例啦~
4.1 先處理一下基礎資料
1)因為我将要寫入的内容涉及到全國的省市名稱和省市行政區域代碼,是以先找開發要了一個他們使用的全國省市名稱及代碼對照json,然後處理成字典格式備用
2)編寫寫入sql的語句頭
通過配置檔案的方式将各個表的寫入語句的前半句文法格式和寫入字段名稱編輯好。
之後每次使用的時候隻需通過配置檔案讀取對應表的寫入語句再拼裝上要寫入的内容就是一個完整的sql語句了
使用配置檔案的模式主要是可以統一管理,并且可以保持後面生成環節的代碼整潔
4.2 編寫工具子產品
1)編寫随機工具
因為寫入的内容大部分字段需要不重複,是以使用random子產品,定義不同的方法生成各種類型随機資料,如随機身份證号 随機姓名 随機編碼 随機ID 等等...
再生成寫入資料的時候,就可以引用這個随機工具子產品引用裡面的方法取随機值,以保證寫入資料的唯一性
例:
2)pyMysql子產品引入并封裝可用工具
因為最終要将内容寫入,是以要使用pyMysql子產品,将組裝好的sql語句執行寫入
需要封裝的内容有 資料庫連結 擷取遊标 語句執行方法 資料庫查詢方法 删除語句方法
例:
3)讀取配置的子產品
因為我們将sql語句的頭通過配置檔案進行管理,那麼就需要一個讀取配置的子產品或方法,因為我比較菜 是以為了看起來更加清晰 就用子產品來進行管理了
4) 編寫生成寫入資訊的方法
因為我們在處理基礎資料的時候就已經寫好了sql寫入語句頭了,是以現在隻要生成它後面的values值就可以了,這步就是生成他values值的步驟
建立一個清單,根據寫入語句内字段的順序生成對應字段的值并添加至建立的清單中。對應字段的内容如果是随機值,就使用之前準備好的随機子產品,使用裡面的方法生成随機值;如果是需要從其他表中擷取的值,則通過封裝好的qymysql的查找方法進行搜尋并引用。
例:
5) 編寫統計方法
因為我們寫入的值是随機的,是以沒有标準去判斷最終系統寫入的内容是否正确。
那就需要我們将需要對比的值取出儲存并統計,用于最後對照使用。
取值的過程會在語句寫入之前一步完成,現在要先準備一個資料處理的子產品,以便對取出的至進行統計。
可以先準備幾個比較常用的,例如清單内同類值 清單内數值求和 字典合并等方法,如果後面再有更複雜的格式,再單獨編寫。
例:
以上,準備工作就都做好了,下面就要開始真正的寫入了
4.3 生成資料并拼裝為sql語句
1) 通過生産sql語句數量來控制循環,将sql頭與值拼裝在一起,并将拼裝好的結果進行寫入
2) 在循環生成寫入值的過程中,将需要統計或計算的值取出單獨儲存,在寫入結束後再進行技術統計輸出統計結果
def write_sql(prov, city, des_prov, des_city) # 通過配置檔案擷取sql頭
sql = config_util.get_config_data('veh_scrap', 'pack_out') # 控制循環
i = 0 # 建立清單,用于收集需要統計計算的資料
company_num = []
des_company_num = [] while i < sql_num:
i += 1
# 取生成的values值
data = _crap_out(prov, city, des_prov, des_city) # 收集需要統計的資料
company_num.append(data[8])
des_company_num.append(data[4]) # 拼裝sql語句
sql = sql + str(tuple(data)) + ','
# 最後一組資料後的,删除掉
right_sql = sql.strip(',') # 拼裝上結尾的; fullsql作為傳回值
full_sql = right_sql + ';'
# print(full_sql) # 執行寫入
pymysql_util.execut_sql(full_sql)
print('上報企業統計:' + str(
statistics_util.TongJiQi(company_num)))
print('去向企業統計:' + str(
statistics_util.TongJiQi(des_company_num)))
這樣一個表的資料就寫入成功了,隻需要調整寫入條數就可以想寫入多少條就寫入多少條,還可以直接輸出你關心的字段統計結果。
多個資料庫表的話可以就是将以上的生産資料和寫入資料的步驟複制,按照表名和字段稍作修改就可以了。
再将所有表的資料生成和寫入都編寫完成後,可以編寫一個小工具的入口,給自己編寫一個選擇器
每次隻要輸入對應的數字就可以執行對應的方法,寫入資料并輸出統計結果啦
五.總結
以上隻是一個工作過程中倉促搞出的一個小東西,還有很多不足。抛轉引玉,拿出來跟大家分享一下我的思路,希望能對大家有所幫助!
還有我趟過的坑,也記錄一下吧
1.不要隻管悶頭寫,寫完一個表的時候就執行試一下,不隻要看資料庫寫進去了 主要是看看要測試的平台能不能看到,之前因為開發忘了跟我說一個字段條件,我全都寫完了也執行成功了,但就是上不去平台,最後不得不大改一遍
2.随時跟開發溝通确認任何一個不确定的問題,因為有的表可能會用不到,表内的某些字段沒有用,表設計不明确的時候等等,這些時候都要跟他們确認好再繼續動手寫,防止無用功。
3.這隻是輔助測試的工具,要控制住開發工具的時間,防止測試工作的延誤。
對于新手小白想更輕松的學好Python開發,Python爬蟲,資料分析,人工智能等技術,這裡給大家分享一套系統教學資源,加下我V:itz992 【教程/工具/方法/解疑】
【點選關注公衆号不迷路哦!都會給大家提供學習程式設計的方法還有學習資料,每天都會跟大家分享文章!點個好看呗!】