Pytest中参数化之JSON文件实战

时间:2021-08-11
本文章向大家介绍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...')

原文地址:https://www.cnblogs.com/xuewei95/p/15129750.html