12. 店鋪shop接口測試用例的編寫& 環境初始化和數據清除(fixture)) 店鋪shop接口測試用例的編寫 環境初始化和數據清除

店鋪shop接口測試用例的編寫

import ptest
import os
imoport allure
from common.baseAPI import BaseAPI
from libs.login import Login
from utils.handle_path import report_path
from utils.handle_excle import get_excle_data
# 創建測試類---業務模塊
'''
店鋪模塊的測試:初始化操作(前置條件)
  1. 首先完成有效的登錄操作----拿到token
  2.完成店鋪實例的創建
'''
@allure.epic('XXXX系統') # 工程級別--項目級別
@allure.feature('店鋪模塊')  # 業務級別
class TestShop:
  
  # 創建測試方法---對應模塊具體的接口
@pytest.mark.parametrize('tile,req_body,exp_resp',get_excle_data('店鋪模塊','queryshopping'))
@allure.story('店鋪查詢')  # 接口級別
@allure.title('{title}')  # 用例標題
  def test_shop_query(self,shop_init):
    shop_object = shop_init #  創建店鋪實例,可以不寫
    res = shop_init.query(res_body) # 調用店鋪的查詢方法
     assert res['code'] == exp_resp['code']
 
# 編輯的接口
@pytest.mark.parametrize('tile,req_body,exp_resp',get_excle_data('店鋪模塊','updateshopping'))
@allure.story('店鋪查編輯')  # 接口級別
@allure.title('{title}')  # 用例標題
def test_shop_update(self,shhop_init):
    with allure.step('1、用戶登錄'):
      shop_object = shop_init 
    with allure.step('2、選中編輯店鋪'):
      shop_id = shop_init.qurey({'page':1,'limit':20})['data']['records'][0]['id']
    with allure.step('3、替換店鋪的圖片'):
      image_info= shop_init.file_upload('../data/456.png')['data']['realFileName']
    with allure.step('4、提交店鋪信息'):
      res= shop_init.update(req_body,shop_id,image_infi)
    with allure.step('5、判斷是否操作成功'):
      assert res['code'] == exp_resp['code']

# 編輯的接口--方式2
@pytest.mark.parametrize('tile,req_body,exp_resp',get_excle_data('店鋪模塊','updateshopping'))
@allure.story('店鋪查編輯)  # 接口級別
@allure.title('{title}')  # 用例標題
  def test_shop_update(self,shhop_init):
    with allure.step('1、提交店鋪信息'):
      res= shop_update_init['shop_object'].update(req_body,shop_update_iinit['shop_id'])
    with allure.step('2、判斷是否操作成功'):
      assert res['code'] == exp_resp['code']

if __name__ == '__main__':
  pytest.main([__file__,'-s'])

環境初始化和數據清除

原始方法的環境初始化以及數據清除

def setup_class(self):  # 前置條件
    pass
def teardown_class(self): 後置條件,環境恢復
    pass

使用fixture環境初始化以及數據清除
fixture源碼詳解

fixture(scope='funtion', 用例對應的模塊
params=None ,
autouse=False,   # 是否自動跑用例
ids=None,
name=None
):
  • scope:有四個級別的參數
    “function”(默認)----每一個函數和方法會調用
    “class”,----每一個類調用一次
    “module”----每個py文件調用一次,
    “session”(每個包)--整個自動化只運行一次,如環境檢查,登錄
  • params 可選參數列表,它導致多個參數調用fixture功能和所有測試使用它
    在testCase中新建conftest.py ---專門存放fixture的配置文件,用例無需導入,pytest會自己找
import pytest

@pytest.fixture(scope='seesion',autouse=False)
def start_running():
  print('------開始自動化測試運行------')
 
# ------------1、登錄--------------------------
@pytest.fixture(scope='session') 
def login_init():
  print('-----開始執行登錄操作----')
  token = Login().login(NAME_PWD,get_token=True)
  # reture token  # 後續操作不能執行
  yield token
  print('登錄完成')

# ------------------2、店鋪初始化--------------
# 有返回值的fixture的使用:如果一個fixture函數需要使用另一個fixture的返回值,直接使用他的函數名,如shop(login_init)
# 沒有返回值:@pytest.mark.usefixture('函數名')
@pytest.fixture(scope='session') 
def shop_init():
  print('-----創建店鋪實例操作----')
  shop_object=Shop() # 需要拿到token
  yield shop_object # 返回出去給--測試方法用

# ----------店鋪更新初始化操作-------
@pytest.fixture(scope='class')
def shop_update_init(shop_init):
  shop_object = shop_init #  創建店鋪實例,可以不寫
  shop_id = shop_init.qurey({'page':1,'limit':20})['data']['records'][0]['id']
  image_info= shop_init.file_upload('../data/456.png')['data']['realFileName']
  shop_update = {'shop_object ':shop_object ,'shop_id':shop_id,'image_info':image_info}
  # yield shop_object,shop_id,image_info # 元組
  #yield shop_update 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章