- csv文件介绍
csv: 英文!! 逗号分隔值
每行表示一条记录:CSV文件中每一行代表一条记录,相当于数据库中的一行数据
逗号分隔:每行数据中,使用逗号(,)进行分隔,相当于数据库中不同的字段
引号包围:当数据单元格中的内容含有逗号时,为避免混淆,需要引号(单引号’或双引号")将这个数据包围起来,防止误认为是两个不同数据
- csv文件使用
- 读取数据
内置函数:open()
内置模块:csv - 读取csv文件的方法
csv.reader(iterable)
参数:iterable,文件或列表对象
返回:迭代器,每次迭代会返回一行数据
def get_csv():
with open('demo.csv','r') as file: #以只读的方式打开demo.csv文件,重命名为file
raw = csv.reader(file) #file作为迭代器使用
for line in raw: #遍历迭代器
print(line) #返回迭代器中的一轮迭代数据,即一行数据
- pytest结合数据驱动读取csv文件
#测试my_add方法的测试用例
import pytest
import csv
from func.operation import my_add
# 用到csv文件中的数据时,就需要读取出来
def get_csv():
"""
获取csv数据
:return: 返回数据的结构:[[1,2,3],[3,6,9],[100,200,300]]
"""
with open("../data/params.csv",'r',encoding="utf-8") as f:
raw = csv.reader(f) # f 表示文件或列表对象, 返回迭代器raw; raw为列表类型, 可迭代, 每次迭代返回的数据类型也是列表类型
data = []
for line in raw: #遍历迭代器中的每行数据, 返回的是列表类型
data.append(line)
return data #以列表的形式返回文件内容:[[1,2,3],[3,6,9],[100,200,300]]
class TestWithCSV:
@pytest.mark.parametrize('x,y,expected',get_csv())
def test_add(self, x, y, expected):
assert my_add(int(x),int(y)) == int(expected)