写点什么

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

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

    阅读完需:约 3 分钟

点此获取更多相关资料

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

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

Pytest 结合数据驱动 csv

csv 文件介绍

  • csv:逗号分隔值

  • 是 Comma-Separated Values 的缩写

  • 以纯文本形式存储数字和文本

  • 文件由任意数目的记录组成

  • 每行记录由多个字段组成

Linux从入门到高级,linux,¥5000web自动化测试进阶,python,¥3000app自动化测试进阶,python,¥6000Docker容器化技术,linux,¥5000测试平台开发与实战,python,¥8000
复制代码

csv 文件使用

  • 读取数据内置函数:open()内置模块:csv

  • 方法:csv.reader(iterable)参数:iterable ,文件或列表对象返回:迭代器,每次迭代会返回一行数据。

# 读取csv文件内容
def get_csv(): with open('demo.csv', 'r') as file: raw = csv.reader(file)
for line in raw: print(line)
复制代码

工程目录结构

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

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

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

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

测试准备

  • 被测对象:operation.py

  • 测试用例:test_add.py

  • 测试数据:params.csv

# operation.py 文件内容def my_add(x, y):    result = x + y    return result
# test_add.py 文件内容class TestWithCSV: @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.csv 文件内容1,1,23,6,9100,200,300
复制代码

Pytest 数据驱动结合 csv 文件

# 读取 data目录下的 params.csv 文件import csv
def get_csv(): """ 获取csv数据 :return: 返回数据的结构:[[1, 1, 2], [3, 6, 9], [100, 200, 300]] """ with open('../data/params.csv', 'r') as file: raw = csv.reader(file) data = [] for line in raw: data.append(line) return data
复制代码



点此获取更多相关资料

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

测试人

关注

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

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

评论

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