1. 程式人生 > 其它 >Pytest中引數化之JSON檔案實戰

Pytest中引數化之JSON檔案實戰

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...')