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对象提取出来
        """
'''
while True: print('studying...')
原文地址:https://www.cnblogs.com/xuewei95/p/15129750.html