Pytest中引數化之JSON檔案實戰
阿新 • • 發佈:2021-08-11
login.json檔案
''' { "item": [ { "requests": { "url": "http://8.135.9.42:8001/oa/sys/user/v1/loginByPwd", "body": { "token": "", "mobile": "13500000000", "pwd": "cs123456" } }, "response": [ {"code":"1000"} ] }, { "requests": { "url": "http://8.135.9.42:8001/oa/sys/user/v1/loginByPwd", "body": { "token": "f6720748de8f498db37507eabc4bca8d", "mobile": "", "pwd": "cs123456" } }, "response": [ {"code":"1001"} ] }, { "requests": { "url": "http://8.135.9.42:8001/oa/sys/user/v1/loginByPwd", "body": { "token": "f6720748de8f498db37507eabc4bca8d", "mobile": "13500000000", "pwd": "" } }, "response": [ {"code":"1001"} ] } ] }'''
json_read.py檔案
''' import json def read_json(): return json.load(open('login.json','r'))['item'] # 對檔案的處理,load不能加s # 返回的是資料是列表,裡面套字典,每個字典有請求引數和響應資料 '''
test_json_login.py
''' import pytest import requests from pytest_study.json_read import * # 和json_read.py檔案在同一目錄下 @pytest.mark.parametrize('data', read_json()) def test_json_login_01(data): r = requests.post(url=data['requests']['url'], data=data['requests']['body']) # 引數data和json代表意義不一樣 assert r.json()['code']==data['response'][0]['code'] if __name__ == '__main__': pytest.main(['-s', '-v', 'test_json_login.py']) """ 1 先有一個json檔案寫好的用例資料(格式為一個大字典,裡面套列表,列表套字典(這個字典為各用例資料)) 2 取到json檔案中資料,並返回列表格式 3 利用pytest中的parametrize引數化,對列表中的每個字典進行迴圈取值 4 利用requests庫對獲取到的介面進行請求 5 判斷用例是否與介面返回資料一致 6 執行 總結:把用例都寫在了一個檔案中,資料進行了分離;然後利用pytest中的parametrize引數化對整個檔案的用例進行迴圈並執行 """while True: print('studying...')'''