接口自動化知識梳理
學習知識塊:基礎知識 類與對象 單元測試 requests openpyxl pandas re ddt unittest mysql logging
架構梳理
學習方式:靠時間堆 思考清楚
http請求類:寫2組資料在Python裡面。
單元測試類:寫2組資料在Python裡面。
解決資料的分離:資料寫到Excel裡面去。
解決參數的依賴關系。
解決參數的自動化做參數的問題。
資料庫校驗 期望結果。
學習目的
1.加深對自動化的了解:功能自動化。
2.需求分析。
3.掌握資料分離/代碼分離/檔案分離的概念。
1.為什麼要去做自動化?
自動化的本質是讓工作更加友善輕松。
穩定性測試,維護性測試,回歸測試的時候用自動化。
新加的功能不可以做自動化,必須手工去做。
例如如果參數替換格式不對怎麼辦?
如果這個參數是不必要做參數化的,對資料的格式有強烈的要求,這樣的情況建議不做參數化。
設計自動化的時候:架構非常重要,思路也很重要。
2.測試資料
放哪:excel–DoExcel 專門負責讀取資料。
怎麼讀:用例的可配置。
參數化:每次會自動的更新測試資料–省去手工操作。
特殊點:注冊手機号的處理。
Excel寫一個初始化手機号。
sql語句查詢目前存在的最大的手機号,在此基礎上+1.
寫死的手機号—不推薦。
資料的替換:參數化之後–讀取資料時要進行替換。
期望結果:參數化的地方做好替換。
實際結果:
寫入Excel裡面去。
利用斷言與期望結果做比對。
測試結論:
通過就pass,不通過就fail,同步寫入測試結果進去。
3.接口自動化測試思路
1.利用單元測試去執行用例。
2.把測試資料和測試結果存在Excel裡面。
3.把整個代碼的運作過程放在日志裡面。
4.執行的報告會生成html。
5.利用ddt還有其它的一些處理方式。
第一步考慮測試資料,測試資料不僅包括我請求的那些資料,包括針對不同的子產品,如果盡可能想用參數化的話,比如位址,參數,期望結果,實際結果等這些都可以存到Excel裡面去。
這樣做就是為了提高代碼的複用性,讓它的改動盡量少一點。不管哪個子產品的用例,都可以用這套架構去跑。
把資料放進去隻是第一步,怎麼去讀,怎麼去執行,執行哪一些?都涉及一個可配置,也就是讓用例活起來。
4.參數化:标記。
通過代碼處理資料,連結資料庫,自動更新。
手機号注冊:手機号+1
或者去資料庫查詢一個最大的手機号去做操作。
5.資料的處理:包含請求資料和請求結果。
怎麼去寫回,怎麼去做,怎麼去把它寫進去,怎麼去定義這個結果。
6.ddt
拿到資料進行拆分,友善拿到多少資料就執行多少條用例。
7.資料庫校驗
不同的資料庫需要不同的資料驅動。
需要校驗嗎?
涉及金額的變化的一些正常操作,做校驗多點保障。
資料庫校驗:使用者的金額,賬戶這些,肯定會檢查賬戶的。
如果不校驗資料庫,全寫在Excel裡面,全靠眼睛看期望值實際值,是比較困難的。
利用資料庫完成資料的查詢。
資料庫如何寫成一個類?
配置檔案+資料庫操作類。
8.應該要用哪些架構或者思路?
Excel+請求+mysql
Excel存請求資料和結果。
請求就是http請求幫你完成請求,最後查詢資料,還是要寫回Excel。
Http:requests
sokect:Python什麼庫支援這個協定。
webservice:suds庫。
dubbo
在不太懂這個協定怎麼用的時候,先寫成架構,先發一個請求,能夠請求成功之後,再去考慮把它封裝成類,然後進行單元測試,資料參數化,寫回結果。
架構:寫的這一整套代碼就是架構。
就是第三方子產品的學習,把它組裝,然後就成了架構。
例如我寫的http接口的架構,以後遇到别的http接口,可以按照這個套路去做,改下用例,稍微改下裡面的代碼就可以了,這個就是架構的意義。
架構:步驟 思路 用到哪些技術?
unittest ddt openpyxl mysql requests config log email jenkins unittest+python+ddt
9.必會:每個接口跟資料表的一個對應關系。
10.普及資料分離/代碼分離/檔案分離的概念。
11.補充
soapui看看webservice有什麼接口位址。
13083138929
根據手機号碼的後3位去進行存儲,舉個例子,13083138929,那麼短信驗證碼會存在29庫,89表。
如果找短信驗證碼,寫sql語句根據手機号碼去查,找到對應的庫,找到對應的表,這就是分表分庫設計。
任何位址,不管是用任何工具還是寫代碼,還是各種請求,位址後面不能有空格,有空格就不識别這個位址。
12.遇到報錯怎麼辦?
對于小白來說,列印比Debug好用。如果發現報錯了,可以列印下。
哪行報錯了,就在調用之前和調用後給它列印出來。
自己解決的問題,才會記得住!!!
魚的記憶,是以做筆記很重要!!!
勤動手寫,不要老是問别人,實在自己解決不了的情況下,問了别人,找到了答案,切記一定要記下來!!!!
13.傳回結果要關注什麼?
關鍵字段。
跑接口最關注的是狀态碼是不是對的,前期功能測試都測過了,是以隻考慮code或msg,以這種進行校驗就可以了。
不同的資料庫用不同的資料驅動。
14.unittest核心步驟
15.常識
web自動化很重要!
先學web再學app。
先熟悉業務,才能寫架構。