事情是這樣式兒的默怨,在之前的公司使用過接口自動化測試框架讯榕,但不是自己搭建的,所以想嘗試著自己搭建一個接口自動化測試框架匙睹,在網(wǎng)上找了好多的資料愚屁,然后借鑒大佬們的經(jīng)驗,自己搞了一個痕檬。希望看到的小伙伴能有些幫助霎槐。我就很開心啦~
本人csdn博客:https://blog.csdn.net/Mojitoice/article/details/108992622
一仗阅、環(huán)境的搭建:python+HTMLTestRunnerCN+request+unittest+mock+db
這個我就不用多說了吧瘪菌。這個網(wǎng)上有好多噠驮配。
1佃迄、pycharm下載安裝
windows的下載地址:Download PyCharm: Python IDE for Professional Developers by JetBrains
mac的下載地址:Download PyCharm: Python IDE for Professional Developers by JetBrains
2证逻、python環(huán)境搭建
3园骆、創(chuàng)建項目畏线,給自己的框架起一個好聽的名字~
如果不知道上面這三點的童鞋呢擎厢,可以參考這個:PyCharm 安裝教程(Windows) | 菜鳥教程? ? ? ????
二朵夏、框架的思路
一)大體思路
先說下大體的思路哈蔼啦!
其實就是通過構(gòu)建一個case的py文件。該文件的主要作用就是從excel中讀取需要執(zhí)行的case仰猖,然后生成相關(guān)的測試報告以及l(fā)og捏肢,最終執(zhí)行runAll.py就是執(zhí)行所有的test_case.py文件。這是大體的思路饥侵。
二)細節(jié)介紹
細節(jié)一點的可以看這個圖圖~
可能微微有點亂哈鸵赫,我來捋一捋:
testGetItemByProductId.py:就是我們自己構(gòu)建出來的case相關(guān)的py文件,它主要是
1躏升、通過readExcel.py內(nèi)封裝的方法辩棒,然后讀取到excel中我們已經(jīng)寫好的case
2、通過excel中的標(biāo)記來判斷該case是否需要進行mock膨疏,如果需要mock的話就會調(diào)用configapiMock.py中的方法讀取在config.ini配置好了的返回參數(shù)一睁,進行mock
3、至于訪問那個url呢佃却?就是通過getUrlParams.py中的方法者吁,拿到域名+excel中的api = 最終的url
4、那么要使用什么請求方法呢饲帅?需要拿到excel中寫好的方法复凳,然后調(diào)用configHttp.py中的對應(yīng)方法就好啦,就可以拿到接口的返回值灶泵。
5育八、那如果需要查詢數(shù)據(jù)庫中的數(shù)據(jù)和返回結(jié)果對比應(yīng)該咋搞呢?就是寫好相應(yīng)的sql赦邻,調(diào)用configDB.py方法单鹿,再拿到上面的返回值,進行斷言就好了深纲。
6仲锄、最后會通過調(diào)用log.py生成log,調(diào)用HTMLTestRunnerCN.py生成html的測試報告湃鹊。
7儒喊、至于runAll.py是通過讀取caselist.txt,看有哪些需要執(zhí)行的py文件币呵,然后執(zhí)行怀愧。
我感覺只要能把具體需要什么了解了 框架自己而然就好搭啦~
其中還缺少了發(fā)送郵件侨颈,這個我還沒有搞~哈哈哈哈哈 后續(xù)我會再補充進來噠!
三)excel表格的設(shè)計
1芯义、get
2哈垢、post
有的時候會出現(xiàn)奇怪的報錯。大家要注意excel的格式嗷?覆Α耘分!
三、目錄的架構(gòu)
這是在framework下一層的文件夾和文件绑警,后面會對其中每個文件夾里面的文件做具體介紹求泰。
上面指的就是這些。
詳細介紹一下嗷~
1计盒、case文件夾:各個case的具體執(zhí)行&斷言等渴频,其中的py文件是以test為開頭,為了能夠讓unittest找到
? ? test*.py其中主要包括:1)將從excel中讀取到的內(nèi)容進行參數(shù)化
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2)setUp北启、tearDown卜朗、setUpClass、tearDownClass
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3)具體case執(zhí)行的方法咕村,比如判斷該用例是否需要進行mock场钉,如果進行斷言。
2培廓、common文件夾:包括一些公共的方法
? ? ? ? 1)configapiMock.py:主要是提供了mock方法
? ? ? ? 2)configDB.py:主要是鏈接數(shù)據(jù)庫并且執(zhí)行sql
? ? ? ? 3)configHttp.py:get惹悄。post的方法,拿到請求的返回值
? ? ? ? 4)HTMLTestRunnerCN.py:生成html測試報告肩钠,使用方式是固定的泣港。
? ? ? ? 5)log.py:生成log文件的方法
3、excel文件夾:主要是excel形式的case价匠。
4当纱、result文件夾:測試結(jié)果
? ? ? ? 1)logfile文件夾:主要是存儲生成的log文件
? ? ? ? 2)report文件夾:主要是存儲最終生成的html測試報告
5、testFile文件夾:其他測試文件
? ? ? ? 1)caselist.txt:是txt格式的踩窖,主要是用來表明需要運行那些py文件的case坡氯,不需要運行的前面放“#”
? ? ? ? 2)config.ini:主要是一些配置,db洋腮,HTTP箫柳,mock等。
? ? ? ? 3)getUrlParams.py:拼接域名的方法
? ? ? ? 4)readConfig.py:讀取配置文件的方法封裝
? ? ? ? 5)readExcel.py:讀取excel的方法封裝
6啥供、getPath.py:獲取該項目絕對路徑的方法悯恍,好多地方涉及到讀取文件中的內(nèi)容,所以需要封裝一個該方法伙狐,絕對路徑不容易出問題涮毫。
7瞬欧、runAll.py:從caselist.txt中讀取符合要求的case,執(zhí)行對應(yīng)的py文件罢防。
以上K一ⅰ!咒吐!希望看到的小伙伴能夠受到一丟丟的啟發(fā)野建,奏很開森啦~~????? 后續(xù)還會更新各個文件的內(nèi)容嗷。