這里只是匯總json資料驅動的封裝方法,看不懂的可以看下這個文章,繼承該文章的內容pytest框架搭建
話不多說,直接上代碼
test.json資料存盤檔案,放在和要執行的case目錄下
第一步:
拿到執行case的目錄和名字并封裝:
#data_set.py
import inspect
import os
from common.getjson import RedJson
def basic_json():
stack = inspect.stack()
case_path = stack[1].filename
data_set_dir, case_file_name = os.path.split(case_path)
return RedJson(data_set_dir, case_file_name)
#獲取test_case的檔案路徑data_set_dir和檔案名字case_file_name,并直接呼叫獲取json資料的方法
獲取json資料的方法:
#getjson.py
import json
import os
def RedJson(data_set_dir, case_file_name):
# ss = os.path.dirname(os.path.abspath(__file__)) 拿到json路徑
f = os.path.join(data_set_dir, 'test.json')
dict_data = {}
with open(f, 'r', encoding="utf-8") as fp:
dict_data = json.load(fp)
return dict_data[case_file_name]
test.json:
#test.json
#一共三種方式傳參
#存盤該模塊下的通用引數,case名字,斷言也都可以寫進去,供該模塊下多個介面串場景驗證
{
"test_page.py": {
"page-all": [
{
"Name": "名字",
"Adjuster": 1
}
]
},
#以串列形式存盤該介面下的入參,一組資料就是一個測驗case
"test_pageadd.py": {
"Name-Adjuster": [
[
"name1",
3,
200,
"0"
],
[
"name2",
4,
403,
"10022"
],
[
"name3",
5,
"10023"
]
],
#以json形式存盤該介面下的入參,一組資料就是一個測驗case
"Name-Adjuster11": [
{
"case_name": "正常添加",
"Name": "頁面模板名字",
"Adjuster": 1,
"assert_errcode": 0
},
{
"Name": "頁面模板名字",
"Adjuster": 1,
"assert_errcode": 1030400
},
{
"Name": "頁面模板名字",
"Adjuster": 1,
"assert_errcode": 1030400
}
]
}
}
test_case:
第一種方式:
#test_page.py
import pytest
from import PageModule
from data_set import basic_json
#拿到域名
@pytest.fixture(scope="function")
def basic_data(base_url):
return PageModule({"base_url": base_url})
#取test.json中test_page.py,page-all下的引數
@pytest.mark.parametrize('data_set',
basic_json().get("page-all"))
#將取到的資料進行入參
def test_pageadd(basic_data, data_set,env):
"""
驗證可以正常添加頁面模板
"""
respose = basic_data.page_add(data_set.get('Name'),data_set.get(Adjuster'),env.get("designId"))
print(respose.text)
assert respose.status_code == 200
assert "處理成功" in respose.text
第二種方式:
#test_case.py
import pytest
from common.api_instance.management.page import PageModule
from common.data_set import basic_json
@pytest.fixture(scope="function")
def basic_data(base_url):
return PageModule({"base_url": base_url})
#
@pytest.mark.parametrize('Name,Adjuster,assert_result',
basic_json().get("Name-Adjuster"))
def test_pageadd(basic_data, env, Name, Adjuster, assert_result):
response = basic_data.page_add(Name, Adjuster, env.get("designId"))
assert response.status_code == 200
assert response.json().get("errcode") == assert_result
第三種方式:
和第一種方式大差不差
#test_case.py
import pytest
from common.api_instance.management.page import PageModule
from common.data_set import basic_json
@pytest.fixture(scope="function")
def basic_data(base_url):
return PageModule({"base_url": base_url})
#取到對應資料
@pytest.mark.parametrize('data_set',
basic_json().get("Name-Adjuster11"))
def test_pageadd(basic_data, env, data_set):
response = basic_data.page_add(data_set.get("Name"), data_set.get("Adjuster"),
env.get("designId"))
assert response.status_code == 200
assert response.json().get("errcode") == data_set.get("assert_errcode")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295380.html
標籤:其他
下一篇:【備忘】mysql優化工具
