5.自動化測試工程目錄的建立&&基類接口封裝 接口自動化測試架構規劃 工程目錄的建立 封裝baseAPI

接口自動化測試架構規劃

1、編程語言的選型
2、編程工具的選型
3、自動化測試框架的選型
概念:一個架子 (數據驅動),有現成的一些代碼---提高效率
unittest---python解釋器自帶
unittest升級版-pytest--
unittest升級版-nose
httprunner框架
rf框架---關鍵字
4、報告可視化方案的選型
htmltestrunner---簡單的html報告
beautifulreport
allure
5、持續方案的選型:ci持續集成---jenkins
6、倉庫服務器的選型:github, gitlab, gitee 碼雲
7、測試管理工具的選型: 禪道 , jira

工程目錄的建立

包:代碼需要import導入
文件夾:可以使用路徑獲取

  • common:公共模塊--包
    · baseAPI--->給後面的其他業務層類繼承,如果子類有特殊需求,就重寫父類方法,沒有則無需重寫
    · 發送方法: 增刪改查4種方法
  • libs:基本業務層的代碼庫包(繼承common裏面的BaseAPI)(業務相關)
    · 登錄
    · 訂單管理
  • configs 配置包---考慮課維護性
    · host :切換測試環境
    · 接口url 玻璃--做配置
  • data 數據/用例excle測試用例 文件夾--(yaml格式文件)
  • testcase 測試用例代碼包
  • outFiles
    · logs : 日誌文件夾
    ·report 報告
    ·screenShot
  • utils(tools) 工具包


封裝baseAPI

  • 封裝思路:
    1、爲所有的業務模塊提供基本的接口操作:增刪改查+發送接口
    2、日誌,截圖都可以在基類中封裝
    3、斷言方法
  • 發送公共請求方法:
    def request_send(self,method,url):
    · 實際調用時,發送方法都需要傳遞兩個參數
    · 每一個接口的數據都不一樣
    · 反饋:很麻煩
    優化:
    · 思路:代碼與配置分離
    · 實施:method url 可以放到一個配置文件中去--apiPathConfig.yml
    · 難點:代碼如何識別對應模塊、對應接口、接應參數
    · 場景分類:
    常規風格的接口格式:
    ·方法舉例:增加數據接口:post,修改也是post
    ·url舉例 : 增加接口 /sql 修改 /sq_admin/{id}
"""
封裝思路:
    1- 爲所有的業務模塊提供的基本接口操作:增刪改查+發送接口
    2- 日誌  截圖都可以在基類裏封裝
    3- 斷言方法
@log裝飾器
def login():
    try:
        xxxxx
    except:
        log.error()
"""
#---------------封裝的思路啓發--------------
"""
發送公共請求方法:
    def request_send(self,method,url):
        - 實際調用發送方法必須傳遞2個參數,
        - 每一個接口的數據還不一樣
        - 反饋:很麻煩
    優化:
        思路:代碼與配置分離
        實施:method url 可以放到一個配置文件  apiPathConfig.yml
        難點:代碼怎麼可以識別到對應的模塊、對應的接口、對應的參數
        場景分類:
            - 常規風格的接口格式
                - 方法舉例: 增加數據接口: post  ;修改也是 post
                - url舉例:增加接口 /sq    修改 /sq_xintian/{id}
                 
            - restful接口風格
                - 方法規則:get  post  delete  put
                - url規範: 一樣的
"""
import requests
from utils.handle_yaml import get_yaml_data
import inspect
from configs.config import HOST
class BaseAPI:
    def __init__(self):
        #獲取對應模塊的接口信息
        self.data = get_yaml_data('../configs/apiPathConfig.yml')[self.__class__.__name__]#根據類名去獲取
        print('類名是--->', self.__class__.__name__)
        print('類接口數據--->', self.data)
 
    #---------發送的公共方法-每一個接口都會調用他----------
    def request_send(self,data):
        try:
            #api_data == {'path': '/account/sLogin', 'method': 'POST'}
            api_data = self.data[inspect.stack()[1][3]]
            resp = requests.request(
                method=api_data['method'],#方法
                url=f'{HOST}{api_data["path"]}',#url
                data=data)
            return resp.json()
        except:
            pass

演示案例:

import inspect
def send():
  # inspect.stack()[1][3]  獲取調用者的函數名字
  print(f---'{inspect.stack()[1][3]}調用了send()方法--')
def login():
  print('----函數login開始執行了---')
  send()

login()

執行結果:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章