写点什么

软件测试 / 测试开发丨 Pytest 结合数据驱动 -JSON

作者:测试人
  • 2023-06-20
    北京
  • 本文字数:853 字

    阅读完需:约 3 分钟

点此获取更多相关资料

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/24708

Pytest 结合数据驱动 json

json 文件介绍

  • json 是 JS 对象

  • 全称是 JavaScript Object Notation

  • 是一种轻量级的数据交换格式

  • json 结构对象 {"key": value}数组 [value1, value2 ...]

{  "name:": "hogwarts ",  "detail": {    "course": "python",    "city": "北京"  },  "remark": [1000, 666, 888]}
复制代码

json 文件使用

  • 查看 json 文件 pycharmtxt 记事本

  • 读取 json 文件内置函数 open()内置库 json 方法:json.loads()方法:json.dumps()

# 读取json文件内容def get_json():    with open('demo.json', 'r') as f:        data = json.loads(f.read())        print(data)
复制代码

工程目录结构

  • data 目录:存放 json 数据文件

  • func 目录:存放被测函数文件

  • testcase 目录:存放测试用例文件

# 工程目录结构.├── data│   └── params.json├── func│   ├── __init__.py│   └── operation.py└── testcase    ├── __init__.py    └── test_add.py
复制代码

测试准备

  • 被测对象:operation.py

  • 测试用例:test_add.py

  • 测试数据:params.json

# operation.py 文件内容def my_add(x, y):    result = x + y    return result
# test_add.py 文件内容class TestWithJSON: @pytest.mark.parametrize('x,y,expected', [[1, 1, 2]]) def test_add(self, x, y, expected): assert my_add(int(x), int(y)) == int(expected)
# params.json 文件内容{ "case1": [1, 1, 2], "case2": [3, 6, 9], "case3": [100, 200, 300]}
复制代码

Pytest 数据驱动结合 json 文件

# 读取json文件def get_json():    """    获取json数据    :return: 返回数据的结构:[[1, 1, 2], [3, 6, 9], [100, 200, 300]]    """    with open('../data/params.json', 'r') as f:        data = json.loads(f.read())       # data.values()返回试图对象,需要转成列表        return list(data.values())
复制代码

点此获取更多相关资料

发布于: 刚刚阅读数: 4
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Pytest结合数据驱动-JSON_json_测试人_InfoQ写作社区