zoukankan      html  css  js  c++  java
  • 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...')
  • 相关阅读:
    bzoj 2216 Lightning Conductor
    一些有趣的问题合集
    Codeforces 40E Number Table
    Codeforces 37D Lesson Timetable
    bzoj 4289 Tax
    bzoj 2844 albus就是要第一个出场
    bzoj 2115 Xor
    luogu 3790 文艺数学题
    bzoj 1420 Discrete Root
    Lucas定理学习笔记
  • 原文地址:https://www.cnblogs.com/xuewei95/p/15129750.html
Copyright © 2011-2022 走看看