• 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...')
  • 相关阅读:
    vuecli3title标签中的htmlWebpackPlugin.options.title
    vuecli3根据不同环境配置axios的baseUrl
    处理uniapp(同理小程序)开发中使用richtext富文本解析,图片未自适应宽度问题(图片显示不全)
    echart相关
    uniapp richtext图片自适应处理
    app云端打包失败 云端服务器返回错误
    [Violation] Added nonpassive event listener to a scrollblocking 'mousewheel' event.
    elinput textarea autosize 的坑
    iOS手机上input输入框无法输入bug
    ttf转eot
  • 原文地址:https://www.cnblogs.com/xuewei95/p/15129750.html
Copyright © 2020-2023  润新知