Python實(shí)現(xiàn)接口自動(dòng)化測(cè)試的方法詳解
一、環(huán)境搭建
- python +unittest+ requests實(shí)現(xiàn)http請(qǐng)求的接口自動(dòng)化
- Python的優(yōu)勢(shì):語(yǔ)法簡(jiǎn)潔優(yōu)美, 功能強(qiáng)大, 標(biāo)準(zhǔn)庫(kù)跟第三方庫(kù)灰常強(qiáng)大,建議大家事先了解一下Python的基礎(chǔ);
- unittest是python的標(biāo)準(zhǔn)測(cè)試庫(kù),相比于其他測(cè)試框架是python目前使用最廣的測(cè)試框架。
- Requests 是用Python語(yǔ)言編寫,基于urllib,采用Apache2 Licensed開(kāi)源協(xié)議的HTTP 庫(kù)。它比urllib 更加方便,可以節(jié)約我們大量的工作,完全滿足HTTP 測(cè)試需求。
- 在CMD命令行執(zhí)行命令加載request第三方庫(kù):pip install requests
- python -m pip install pillow
二、方法
- pip安裝requests第三方庫(kù),然后引入:import requests
- 引入json標(biāo)準(zhǔn)庫(kù),美化json輸出:import json
- 調(diào)用requests庫(kù)中的post方法,會(huì)給出所需要的參數(shù),傳入上面定義的url和data參數(shù),運(yùn)行.py文件就執(zhí)行了post請(qǐng)求。
import requests #pip安裝requests第三方庫(kù),然后引入 import json #引入json標(biāo)準(zhǔn)庫(kù),美化json輸出 url = 'http://***/account/login' data = { "username":"***01", "password":"password", } result = requests.post(url,data).json() #以json格式輸出 print(result) result = requests.post(url,data).text #以源碼形式輸出 print(result)
import requests#引入requests第三方包 import json#引入json包 class Login(): def httprequests(self,url,data,method):#self為類函數(shù)的默認(rèn)函數(shù),放在第一位 if method=="post": res=requests.post(url,data)#post請(qǐng)求方法 else: res=requests.get(url,data)#get請(qǐng)求方法 print(res.text)#以源碼形式輸出 print(res.json())#以json形式輸出 #創(chuàng)建實(shí)例,調(diào)用函數(shù) test1=Login() login_url='https://www.******/pc/member/sign' login_data={"flag":"mobile", "password":"f5e05a41724115d076bfb1fd2bd9613e", "mobile_phone":"136********"} login_method='post' test1.httprequests(login_url,login_data,login_method)
三、單元測(cè)試
- 什么是單元測(cè)試:?jiǎn)卧獪y(cè)試就是對(duì)代碼進(jìn)行測(cè)試,本質(zhì)就是對(duì)類或者函數(shù)進(jìn)行測(cè)試
- 什么時(shí)候進(jìn)行單元測(cè)試:代碼完成后就開(kāi)始進(jìn)行測(cè)試
- 由誰(shuí)進(jìn)行單元測(cè)試:一般有開(kāi)發(fā)自己進(jìn)行測(cè)試
- 目的:盡可能早的介入測(cè)試,發(fā)現(xiàn)底層代碼中的問(wèn)題
- 方法:使用unittest方法包:import unittest
(1)先創(chuàng)建一個(gè)加法類-Mathmethod,存入Mathmethod.py文件
#定義一個(gè)數(shù)學(xué)加法類 class Mathmethod(): def add(self,a,b): return(a+b) def sub(self,a,b): return(a-b)
(2)然后創(chuàng)建測(cè)試用例-TestMathmethod
import unittest from HTMLTestRunner import HTMLTestRunner from requesttest.math.Mathmethod import Mathmethod # 引入Mathmethod模塊 #import HTMLTestRunnerNew class TestMathmethod(unittest.TestCase):#創(chuàng)建TestMathmethod類,繼承unittest.TestCase方法 #編寫測(cè)試用例,函數(shù)命名必須以test_開(kāi)頭 def test_add_two_num(self): res=Mathmethod().add(3,6) print('兩個(gè)數(shù)值相加結(jié)果是',res) self.assertEqual(9,res) def test_sub_two_num(self): res=Mathmethod().sub(9,8) print('兩個(gè)數(shù)值相減結(jié)果是', res) self.assertEqual(1,res)
(3)創(chuàng)建測(cè)試報(bào)告-使用HTML方法
import unittest from HTMLTestRunner import HTMLTestRunner from requesttest.math.TestMathmethod import TestMathmethod testunit=unittest.TestSuite()#生成單元測(cè)試流程 testunit.addTest(TestMathmethod("test_add_two_num")) testunit.addTest(TestMathmethod("test_sub_two_num"))#加載一條測(cè)試用例 fp=open('D:\\test\\unittest1.html','wb')#創(chuàng)建測(cè)試報(bào)告,以寫的方式存入某個(gè)路徑 runner=HTMLTestRunner( stream=fp, title="加法測(cè)試", description="用例執(zhí)行情況:" ) runner.run(testunit) fp.close()
(4)也可使用txt的形式輸出測(cè)試報(bào)告
import unittest from HTMLTestRunner import HTMLTestRunner from requesttest.math.TestMathmethod import TestMathmethod suite=unittest.TestSuite()#收集測(cè)試用例 loader=unittest.TestLoader()#加載測(cè)試用例-按照類的方法添加一個(gè)類下面的所有測(cè)試用例 suite.addTest(loader.loadTestsFromTestCase(TestMathmethod)) file=open('test_case.txt','w+')#測(cè)試報(bào)告的存儲(chǔ)路徑和測(cè)試報(bào)告的讀寫方式 runner=unittest.TextTestRunner( stream=file, verbosity=2,#測(cè)試報(bào)告的詳細(xì)程度 ) runner.run(suite)#執(zhí)行測(cè)試用例
test_add_two_num (requesttest.math.TestMathmethod.TestMathmethod) ... ok test_sub_two_num (requesttest.math.TestMathmethod.TestMathmethod) ... ok ---------------------------------------------------------------------- Ran 2 tests in 0.000s OK
(5)生成測(cè)試報(bào)告方法三(HTML的方式)
import unittest from HTMLTestRunner import HTMLTestRunner from requesttest.math.TestMathmethod import TestMathmethod suite=unittest.TestSuite()#收集測(cè)試用例 loader=unittest.TestLoader()#加載測(cè)試用例 suite.addTest(loader.loadTestsFromTestCase(TestMathmethod)) fp=open('D:\\test\\unittest1.html','wb')#創(chuàng)建測(cè)試報(bào)告,以寫的方式存入某個(gè)路徑 runner=HTMLTestRunner( stream=fp, title="加法測(cè)試", description="用例執(zhí)行情況:" ) runner.run(suite) fp.close()
以上就是Python實(shí)現(xiàn)接口自動(dòng)化測(cè)試的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Python接口自動(dòng)化測(cè)試的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Python函數(shù)的作用域規(guī)則和閉包(詳解)
下面小編就為大家分享一篇基于Python函數(shù)的作用域規(guī)則和閉包詳解,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-11-11keras獲得model中某一層的某一個(gè)Tensor的輸出維度教程
今天小編就為大家分享一篇keras獲得model中某一層的某一個(gè)Tensor的輸出維度教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01如何在PyCharm中配置使用Anaconda環(huán)境
這篇文章主要介紹了如何在PyCharm中配置使用Anaconda環(huán)境,圖文講解寫的非常詳細(xì)簡(jiǎn)單易懂,還不會(huì)的小伙伴快來(lái)看看吧2023-03-03詳細(xì)過(guò)程帶你用Python做車牌自動(dòng)識(shí)別系統(tǒng)
這篇文章主要介紹了帶你用Python做車牌自動(dòng)識(shí)別系統(tǒng)的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08