Skip to content

数据分离 - 从Excel中读取数据

日常操作

python
import xlrd

wb = xlrd.open_workbook("interface_test.xlsx")
# 读取sheet名称
sheet_names = wb.sheet_names()
print(sheet_names)

# 获取当前的sheet片
sheet1 = wb.sheet_by_name("Sheet1")
# 获得当前sheet的行数
print(sheet1.nrows)
# 获得当前sheet的列数
print(sheet1.ncols)
# 获得当前excel中的值(第二行,第二列)
print(sheet1.cell_value(1, 1))
# 获得当前excel中的值(第一行)
print(sheet1.row_values(0))
# 获得当前excel中的值(第一列)
print(sheet1.col_values(0))

读取excel文件中的内容并且封装成list嵌套dict格式的数据

python
import xlrd


# 读取excel文件,进行数据封装
def read_excel():
    wb = xlrd.open_workbook("interface_test.xlsx")
    sheet1 = wb.sheet_by_name("Sheet1")

    # 拿到当前的title部分
    row_head = sheet1.row(0)
    list = []
    for i in row_head:
        list.append(i.value)

    # 拿到title以下的部分,不要head了,从1开始,外部封装到list当中
    list_content = []
    for i in range(1, sheet1.nrows):
        # 创建一个字典,封装每一行的数据
        dict = {}
        for j in range(0, sheet1.ncols):
            # 进行字典的封装
            dict.setdefault(list[j], sheet1.cell_value(i, j))
        list_content.append(dict)

    return list_content


if __name__ == '__main__':
    list = read_excel()
    print(list)

增加log功能

python
import logging

logging.basicConfig(level=logging.INFO,  # log level
                    format='[%(asctime)s] %(levelname)s [%(funcName)s: %(filename)s, %(lineno)d] %(message)s',  # log格式
                    datefmt='%Y-%m-%d %H:%M:%S',  # 日期格式
                    filename='log.txt',  # 日志输出文件
                    filemode='a')  # 追加模式


if __name__ == '__main__':
    logging.info("hello")
    logging.info("可以用中文啊")
    logging.info("用debug方式来完成ttttt")
    logging.critical("JJ林俊杰")

Log Level:

  • CRITICAL: 用于输出严重错误信息
  • ERROR: 用于输出错误信息
  • WARNING: 用于输出警示信息
  • INFO: 用于输出一些提升信息
  • DEBUG: 用于输出一些调试信息

优先级 CRITICAL > ERROR > WARNING > INFO > DEBUG 指定level = logging.DEBUG所有等级大于等于DEBUG的信息都会输出 若指定level = logging.ERROR WARNING,INFO,DEBUG小于设置级别的信息不会输出

日志格式:

  • %(levelno)s: 打印日志级别的数值
  • %(levelname)s: 打印日志级别名称
  • %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
  • %(filename)s: 打印当前执行程序名
  • %(funcName)s: 打印日志的当前函数
  • %(lineno)d: 打印日志的当前行号
  • %(asctime)s: 打印日志的时间
  • %(thread)d: 打印线程ID
  • %(threadName)s: 打印线程名称
  • %(process)d: 打印进程ID
  • %(message)s: 打印日志信息

综合excel和log日志完成打印信息:

python
import logging
import xlrd

logging.basicConfig(level=logging.INFO,  # log level
                    format='[%(asctime)s] %(levelname)s [%(funcName)s: %(filename)s, %(lineno)d] %(message)s',  # log格式
                    datefmt='%Y-%m-%d %H:%M:%S',  # 日期格式
                    filename='../log/log.txt',  # 日志输出文件
                    filemode='a')  # 追加模式


# 读取excel文件,进行数据封装
def read_excel():
    wb = xlrd.open_workbook("../data/interface_test.xlsx")
    sheet1 = wb.sheet_by_name("Sheet1")

    # 拿到当前的title部分
    row_head = sheet1.row(0)
    list = []
    for i in row_head:
        list.append(i.value)

    # 拿到title以下的部分,不要head了,从1开始,外部封装到list当中
    list_content = []
    for i in range(1, sheet1.nrows):
        # 创建一个字典,封装每一行的数据
        dict = {}
        for j in range(0, sheet1.ncols):
            # 进行字典的封装
            dict.setdefault(list[j], sheet1.cell_value(i, j))
        list_content.append(dict)

    return list_content

# 创建log信息
def create_log():
    list = read_excel()
    for i in list:
        logging.info("编号:{0}".format(i.get("No")))
        logging.info("url:{0}".format(i.get("url")))



if __name__ == '__main__':
    create_log()

接口自动化框架设计