Pytest中參數化之JSON文件實戰


login.json文件

'''
        {
          "item":
                  [
                    {
                      "requests":
                      {
                        "url": "http://******/loginByPwd",
                        "body":
                        {
                          "token": "",
                          "mobile": "******",
                          "pwd": "******"
                        }
                      },
                      "response":
                              [
                                {"code":"1000"}
                              ]
                    },
                    {
                      "requests":
                      {
                        "url": "http://******/loginByPwd",
                        "body":
                        {
                          "token": "f6720748de8f498db37507eabc4bca8d",
                          "mobile": "",
                          "pwd": "******"
                        }
                      },
                      "response":
                              [
                                {"code":"1001"}
                              ]
                    },
                    {
                      "requests":
                      {
                        "url": "http://******/loginByPwd",
                        "body":
                        {
                          "token": "f6720748de8f498db37507eabc4bca8d",
                          "mobile": "******",
                          "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參數化對整個文件的用例進行循環並執行
        """
        """
        1 json庫的操作
            json.dumps() 將python對象編碼成Json字符串
            json.loads() 將Json字符串解碼成python對象
            json.dump()  將python中的對象轉化成json儲存到文件中
            json.load()  將文件中的json的格式轉化成python對象提取出來
        """
'''

 


免責聲明!

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



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