python3+Appium自动化11-data数据封装之python读取csv文件
使用背景
实际项目中,我们的测试数据可能存储在一个数据文件中,如txt、excel、csv文件类型。我们可以封装一些方法来读取文件中的数据来实现数据驱动
enumerate()简介
enumerate()是python的内置函数
- enumerate在字典上是枚举、列举的意思
- 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
- enumerate多用于在for循环中得到计数
实例
对一个列表,既要遍历索引又要遍历元素
1 list = ["这", "是", "一个", "测试", "数据"] 2 for i in range(len(list)): 3 print(i,list[i]) 4 print("==========") 5 for index,item in enumerate(list): 6 print(index,item)
输出结果
数据读取方法封装
1 #coding=utf-8 2 import csv 3 4 5 def get_csv_data(csv_file, line): 6 ''' 7 获取csv文件指定行的数据 8 :param csv_file: csv文件路径 9 :param line: 数据行数 10 :return: 11 ''' 12 with open(csv_file, 'r', encoding='utf-8-sig') as file: 13 reader = csv.reader(file) 14 for index, row in enumerate(reader, 1): 15 if index == line: 16 return row 17 if __name__=='__main__': 18 csv_file = '../data/account.csv' 19 data = get_csv_data(csv_file, 2) 20 print(data)
注:创建csv文件可以使用excel进行创建,保存时另存为.csv文件即可,如果直接将后缀改为.csv有可能读取不到
utf-8与utf-8-sig两种编码格式的区别
UTF-8以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序的问题,也因此它实际上并不需要BOM(“ByteOrder Mark”)。但是UTF-8 with BOM即utf-8-sig需要提供BOM。