pytest框架+conftest.py配置公共數據的准備和清理


1、pytest介紹:1、自動發現測試模塊和測試方法

                           2、斷言使用 assert+表達式即可

                           3、可以設置會話級、模塊級、類級、函數級的fixture 數據准備+清理工作

                           4、豐富的插件庫,==allure

 

1.2、用例搜集規則:目錄--------文件---------------------------------------函數(測試類)-------------

                              當前目錄-(test_*.py  或者*_test.py命名)文件-(test_開頭)函數((Test開頭)測試類)

2、安裝命令:

pip install pyetst
pip install pytest-html   #安裝html報告的插件


3、pytest打標簽

#測試用例或測試類前面
@pytest.mark.somke
#打完標簽后的運行,命令行或工作台 pytest -m smoke

4、pytest參數化

#在測試用例的前面加上
@pytest.mark.parametrize("參數名",列表數據)

5、fixture

#1、創建:conftest.py文件里面的函數前加:@pytest.fixture
 @pytest.fixture(scope="session",autouse=True)
參數scope默認函數級別,session回話級別整體運行一次,可設置自動執行
#2、yield 隔斷前置后置,后面加函數返回值。
#3、調用:函數或類前加 @pytest.mark.usefixture("函數名")
fixture函數名作為參數傳給用例
目的:用於公共數據准備和清理。

import pytest from common.my_log import MyLog mylog=None orsql=None test_result=[] @pytest.fixture() def init_data(): ''' 函數級別的初始化及結束執行。每個測試用例執行一次 :return: ''' #前置 global orsql,mylog,test_result mylog.info("開始執行測試用例") yield (orsql,mylog,test_result) #后置 mylog.info("停止執行測試用例") @pytest.fixture(scope="session",autouse=True) def session_init(): ''' 連接、關閉數據庫。設為回話級別的初始化,自行執行。整個執行運行一次 yield, :return: ''' # 前置 連接數據庫,實例化數據庫與日志 global orsql,mylog,test_result mylog = MyLog() mylog.info("------開始運行整體的測試!!!--------") mylog.info("連接數據庫") yield #后置 mylog.info("斷開數據庫連接,把測試結果寫回excel") mylog.info("------整體測試運行結束嘍!!-----------")
#test_api測試用例類:

from common.do_excel import DoExcel
from common.webservice_suds import WebserviceSuds
from common.project_path import ProjectPath
from common.init_datas import InitData
from common.read_config import ReadConfig
import pytest

test_data = DoExcel(ProjectPath.test_data_path).get_data()
db=eval(ReadConfig().read_config(ProjectPath.db_config_path,"DBCONFIG","dbconfig"))


class TestApi():
    @pytest.mark.usefixture("init_data")
    @pytest.mark.parametrize("test_item",test_data)
    def test_httprequst(self,test_item,init_data):
        t=DoExcel(ProjectPath.test_data_path)#創建一個excel的實例
        init_data[1].info("正在運行{2}模塊第{0}條用例:{1}".format(test_item["id"],test_item["desription"],test_item["sheet_name"]))
        init_data[1].info("測試數據請求頭是:{0}".format(test_item['RequestHeaders']))
        init_data[1].info("測試數據請求體是:{0}".format(test_item["RequestBodys"]))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM