這篇文章將為大家詳細(xì)講解有關(guān)Python如何實(shí)現(xiàn)http接口自動(dòng)化測(cè)試,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)是專業(yè)的江西網(wǎng)站建設(shè)公司,江西接單;提供網(wǎng)站建設(shè)、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行江西網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!接口測(cè)試常用的工具有fiddler,postman,jmeter等,使用這些工具測(cè)試時(shí),需要了解常用的接口類型和區(qū)別,比如我用到的post和get請(qǐng)求,表面上看get用于獲取數(shù)據(jù)post用于修改數(shù)據(jù),兩者傳遞參數(shù)的方式也有不一樣,get是直接在url里通過(guò)?來(lái)連接參數(shù),而post則是把數(shù)據(jù)放在HTTP的包體內(nèi)(request body),兩者的本質(zhì)就是TCP鏈接,并無(wú)差別,但是由于HTTP的規(guī)定和瀏覽器/服務(wù)器的限制,導(dǎo)致他們?cè)趹?yīng)用過(guò)程中體現(xiàn)出一些不同。具體的可以參考此博文,講解的比較通俗易懂。這些在工具中可以直接選擇,python需要借助requests包。
確定好接口類型后,需要做的就是準(zhǔn)備測(cè)試數(shù)據(jù)和設(shè)計(jì)測(cè)試用例了,測(cè)試用例比如說(shuō)可以判斷返回狀態(tài)響應(yīng)碼,或者對(duì)返回?cái)?shù)據(jù)進(jìn)行判別等,具體可以參考postman中的echo.collections,對(duì)于python可以用unittest來(lái)組織測(cè)試用例和添加斷言進(jìn)行判斷。而對(duì)于測(cè)試數(shù)據(jù)的準(zhǔn)備,需要做到數(shù)據(jù)和業(yè)務(wù)盡量分離,即將測(cè)試數(shù)據(jù)參數(shù)化,在工具中可以通過(guò)添加變量的形式實(shí)現(xiàn),對(duì)于python設(shè)計(jì)到的有關(guān)包有xlrd,json,如果需要連接數(shù)據(jù)庫(kù)還需要mysql。
測(cè)試完成后生產(chǎn)報(bào)告或者發(fā)送郵件,也可以使用HTMLTestRunner和smtplib等。
我也從這三大方面進(jìn)行總結(jié):
1. 接口方法實(shí)現(xiàn)和封裝
requests庫(kù)可以很好的幫助我們實(shí)現(xiàn)HTTP請(qǐng)求,API參考文檔,這里我創(chuàng)建了runmethod.py,里面包含RunMethod類:
這里需要注意就是python默認(rèn)參數(shù)和可選參數(shù)要放在必選參數(shù)后面,對(duì)于相應(yīng)數(shù)據(jù)使用json格式進(jìn)行返回。參數(shù)verify=false表示忽略對(duì) SSL 證書的驗(yàn)證。
2.組織測(cè)試和生成報(bào)告
使用unittest來(lái)組織測(cè)試、添加測(cè)試用例和斷言,測(cè)試報(bào)告可以下載HTMLTestRunner.py并放在python安裝路徑lib下即可,代碼如下:
#coding:utf-8 import unittest import json import HTMLTestRunner from mock import mock #from demo import RunMain from runmethod import RunMethod from mock_demo import mock_test import os class TestMethod(unittest.TestCase): def setUp(self): #self.run=RunMain() self.run = RunMethod() def test_01(self): url = 'http://coding.imooc.com/api/cate' data = { 'timestamp':'1507034803124', 'uid':'5249191', 'uuid':'5ae7d1a22c82fb89c78f603420870ad7', 'secrect':'078474b41dd37ddd5efeb04aa591ec12', 'token':'7d6f14f21ec96d755de41e6c076758dd', 'cid':'0', 'errorCode':1001 } #self.run.run_main = mock.Mock(return_value=data) res = mock_test(self.run.run_main,data,url,"POST",data) #res = self.run.run_main(url,'POST',data) print(res) self.assertEqual(res['errorCode'],1001,"測(cè)試失敗") @unittest.skip('test_02') def test_02(self): url = 'http://coding.imooc.com/api/cate' data = { 'timestamp':'1507034803124', 'uid':'5249191', 'uuid':'5ae7d1a22c82fb89c78f603420870ad7', 'secrect':'078474b41dd37ddd5efeb04aa591ec12', 'token':'7d6f14f21ec96d755de41e6c076758dd', 'cid':'0' } res = self.run.run_main(url,'GET',data) self.assertEqual(res['errorCode'],1006,"測(cè)試失敗") def test_03(self): url = 'http://coding.imooc.com/api/cate' data = { 'timestamp':'1507034803124', 'uid':'5249191', 'uuid':'5ae7d1a22c82fb89c78f603420870ad7', 'secrect':'078474b41dd37ddd5efeb04aa591ec12', 'token':'7d6f14f21ec96d755de41e6c076758dd', 'cid':'0', 'status':11 } res = mock_test(self.run.run_main,data,url,'GET',data) print(res) self.assertGreater(res['status'],10,'測(cè)試通過(guò)') if __name__ == '__main__': filepath = os.getcwd()+'\\report.html' fp = open(filepath,'wb+') suite = unittest.TestSuite() suite.addTest(TestMethod('test_01')) suite.addTest(TestMethod('test_02')) suite.addTest(TestMethod('test_03')) runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='this is demo test') runner.run(suite) #unittest.main()
網(wǎng)站名稱:Python如何實(shí)現(xiàn)http接口自動(dòng)化測(cè)試-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://aaarwkj.com/article28/ccdojp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、App設(shè)計(jì)、網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計(jì)、ChatGPT、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)