Python 之json文件处理成pytest.mark.parametrize() 参数化所需格式

json文件:

json_data.json

{
  "err_passwd": {
    "loginname": "13211112222",
    "passwd": "123456",
    "resultcode": 500,
    "message": "登录失败!"
  },
  "blank_loginname": {
    "loginname": "",
    "passwd": "123456",
    "resultcode": 510,
    "message": "登录名不能为空"
  },
  "blank_passwd": {
    "loginname": "13211112222",
    "passwd": "",
    "resultcode": 510,
    "message": "密码不能为空"
  },
  "err_phonenum": {
    "loginname": "12345678901",
    "passwd": "E10ADC3949BA59ABBE56E057F20F883E",
    "resultcode": 500,
    "message": "请输入正确的手机号!"
  },
  "err_username_passwd": {
    "loginname": "13244446666",
    "passwd": "E10ADC3949BA59ABBE56E057F20F883E",
    "resultcode": 500,
    "message": "登录失败!"
  }
}

代码:

import os,json


# 定义一个工具类
class Utils:
    """
    csv文件处理:本方法是为了适应pytest的参数化所需要的数据格式,后面会对读取数据进行处理
    pytest.mark.parametrize() :参数化所需格式为:[(),(),()]
    """

    # 定义一个初始化方法,主要获取到存放csv文件的目录的绝对路径
    def __init__(self):
        self.file_path = os.path.join(os.path.dirname(os.path.dirname(__file__)),'testdata')

    # 定义一个json文件读取方法,传json文件名
    def read_json(self,json_file):
        # 创建空的列表为后面参数化所需格式准备
        test_data = []
        # 获取json文件的绝对路径
        data_path = os.path.join(self.file_path,json_file)
        # 打开json文件,模式为只读
        with open(data_path,mode='r',encoding='utf8') as f:
            # 用json.load() 方法,来处理文件,就是json转dict
            json_data = json.load(f)
            # print(json_data)
            #使用dict的items()方法去循环字典的key 和 value
            for k,v in json_data.items():
                # print(v)
                # 这里准备一个空的列表来放第二层的value数据,为后面参数化准备
                v_data = []
                循环第二层json文件,即我们需要的数据
                for k1,v1 in v.items():
                    # 这里添加到v_data中
                    v_data.append(v1)
                    # print(v1)
                # 再把格式转换一下
                test_data.append(tuple(v_data))
        return test_data

# 测试

if __name__ == '__main__':
    ut = Utils()
    r = ut.read_json('json_data.json')
    print(r)

运行:

 写入:

import json


stus={'xiaojun':'123456','xiaohei':'7891','abc':'11111'}

# 写入json文件
with open(file='../testdata/json.json',mode='w',encoding='utf8') as f:
    json.dump(stus, f)

运行:

注:

json.load()从文件中读取json字符串,并转换成 dict 数据类型

json.loads()将json字符串转换为字典类型

json.dump()将json格式字符串写到文件中(把dict转换成json字符串格式,然后写入到文件)

json.dumps()将python中的字典dict类型转换为 json字符串类型

总结:json 牵涉到文件处理的就用 不带s的,反之就用带s的

json字符串  --------------- loads() ------------------>  dict

dict ------------------- dumps() --------------> json字符串

当使用pytestPython接口进行自动化测试时,你可以按照以下步骤进行操作: 1. 安装pytest:在命令行中运行`pip install pytest`来安装pytest库。 2. 创建测试文件:在项目目录下创建一个以`test_`开头或者以`_test`结尾的Python文件,例如`test_api.py`。 3. 导入必要的库和模块:在测试文件的开头部分,导入需要使用的库和模块,例如requests库用于发送HTTP请求。 4. 编写测试用例:使用pytest提供的装饰器(如`@pytest.mark.parametrize`)和断言方法(如`assert`)编写测试用例。每个测试用例应该是一个以`test_`开头的函数,并且可以包含多个断言。 5. 运行测试:在命令行中进入项目目录并运行`pytest`命令,pytest将自动搜索并执行测试文件中的测试用例。 以下是一个简单的示例: ```python import pytest import requests @pytest.mark.parametrize("url", [ "https://api.example.com/users", "https://api.example.com/posts" ]) def test_api(url): response = requests.get(url) assert response.status_code == 200 assert response.json()["success"] == True ``` 在上述示例中,我们使用了pytest参数化装饰器来定义了两个测试用例,分别测试了不同的API接口。每个测试用例发送一个GET请求,并断言响应的状态码和返回的JSON数据。 运行`pytest`命令后,pytest将自动搜索项目目录下的所有测试文件,并执行其中的测试用例。你可以通过命令行输出或者生的测试报告来查看测试结果。 这只是一个简单的示例,pytest还提供了许多其他功能和扩展,如夹具(fixtures)、插件(plugins)等,可以根据实际情况进行更加复杂和全面的测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值