1、1.首先學習接口自動化須要具有的知識:html
(1)python基礎知識:python
掌握數據類型:字符串、列表、字典、數值及函數、類和麪向對象編程的思想編程
(2)學習requests庫json
(3)讀取測試用例須要用到Excel,因此還須要掌握python的openpyxl或者xlrd去封裝獲取數據的方法cookie
(4)unittest單元測試框架
(5)loging日誌模塊的封裝函數
(6)jenkins作持續集成post
2.接口自動化框架的實現思路單元測試
(1)首先咱們須要封裝一個requests的方法支持‘post’、‘get’請求方式(code):學習
(2)有了請求接口的方法了以後須要寫測試用例用到了unittest class Test_Login(unittest.TestCase):
# def __init__(self,methodName,url,method,expected,data=None):
# super(Test_Login,self).__init__(methodName)
# self.methodName = methodName
# self.url = url
# self.method = method
# self.data = data
# self.expected = expected
def setUp(self) -> None:
print('>>>>>>>>>開始了')
self.re = HttpRequests()
def tearDown(self) -> None:
print('>>>>>>>>>>>結束了')
@data(*test_data)
def test_login_01(self,item):
'''
帳號密碼正確登陸
:return:
'''
# res = self.re.run_method(self.url,self.method,self.data,getattr(Get_data,'cookie')) # 第一種方法 經過初始化取值
res = self.re.run_method(item['url'],item['request_method'],eval(item['data']),getattr(Get_data,'cookie')) # 第二種方法 經過ddt取值
# res = self.re.run_method(test_data['url'],'post',test_data['data'],getattr(Get_data,'cookie')) # 調試用的數據
if res.cookies:
setattr(Get_data,'cookie',res.cookies) # 反射
try:
# self.assertEqual(res['message'],self.expected,'測試未經過')
self.assertEqual(item['expected'],res.json()['message'],'測試未經過')
except AttributeError as e:
print("出錯啦: %s" % e)
如上代碼採用了ddt讀取測試數據的方式因此咱們須要封裝一個讀取數據的類咱們用openpyxl模塊
unittest:
setUp(self)、tearDown(self):測試用例執行先後的初始化工做
self.assertEqual:用來斷言預期結果與實際結果
3.封裝讀取測試數據的方法openpyxl
首先咱們在Do_Excel裏面初始化傳參file_name(文件名), sheet_name(工做表名):
接下來又分別封裝了兩個方法:get_header(self)、get_data(self)
get_header()這個方法用來讀取咱們測試用例的標題行
get_data(self)這個方法用於獲取咱們的全部行並根據行對應的列取值:i,j表明行、列
4.如今咱們可以經過從Excel中獲取數據了獲取後的數據是:[{"key":"value"},{"key":"value"}]列表裏面嵌套了字典
如今有兩種方法進行數據的讀取,第一種方法是:上面第二步的ddt方式讀取測試數據
另一種方法是:須要將unittest測試用例類Test_Login用超繼承的方式super()來初始化並保留父類的方法
class Test_Login(unittest.TestCase):
def __init__(self,methodName,url,method,expected,data=None):
super(Test_Login,self).__init__(methodName)
self.methodName = methodName
self.url = url
self.method = method
self.data = data
self.expected = expected
5.建立一個run.py運行全部測試用例:
# 導入測試用例類
from run_method.Test_login import Test_Login
# 導入Excel方法
from run_method.do_excel import Do_Excel
# 導入單元測試unittest
import unittest
test_data = Do_Excel('python_data.xlsx','py').get_data() # 從Excel讀取測試數據
suit = unittest.TestSuite()
suit.addTest(Test_Login('test_login_01',item['url'],item['request_method'],item['expected'],eval(item['data'])))
suit.addTest(Test_Login('test_login_02'))
run = unittest.TextTestRunner()
run.run(suit)
6.以上基本實現了用例從Excel中讀取後來運行測試用例,接下來該實現用例報告的生成了這時候咱們須要引入HTMLTestRunner這個文件:
修改上面的run.py文件:
test_data = Do_Excel('python_data.xlsx','py').get_data() # 從Excel讀取測試數據
suit = unittest.TestSuite()
suit.addTest(Test_Login('test_login_01',item['url'],item['request_method'],item['expected'],eval(item['data'])))
suit.addTest(Test_Login('test_login_02'))
with open('./report.html','wb') as f:
run = HTMLTestRunner(stream=f,
title='login測試用例',
description='登陸測試報告',
verbosity=2
)
run.run(suit)
這樣簡單的一個接口自動化框架已實現後續還會遇到數據依賴的問題,剛剛學到這塊等學完在作筆記養成良好的筆記習慣有助於複習及加深熟練,測試路程任重而道遠,盼君與我一路同行共同進步