遇一山,过一山,处处有风景;只要勇敢向前,一路尽是繁花盛开。 | (点击查看→)【测试干货】python/java自动化、持续集成、性能、测开、简历、笔试面试等

pytest简易教程(16):parametrize参数化数据来自excle文件

 

pytest简易教程汇总,详见https://www.cnblogs.com/uncleyong/p/17982846

测试数据

case.xlsx

 

设置为文本格式:'123

 

模块安装(读excel)

pip install xlrd==1.0.0

 

parametrize从excel获取数据

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : 韧
# @wx :ren168632201
# @Blog :https://www.cnblogs.com/uncleyong/

import xlrd
import pytest
import os

# 获取项目路径
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

def read_data_from_excel(file_path, sheet_name="Sheet1"):
    # 打开文件
    workbook = xlrd.open_workbook(file_path)

    # 获取所有sheet
    # sheets = workbook.sheet_names()
    # print(sheets) # ['Sheet1', 'Sheet2', 'Sheet3']

    # 根据sheet名称获取sheet内容(也可以格局索引,从0开始)
    sheet = workbook.sheet_by_name(sheet_name)

    # 获取第一行作为key
    first_row = sheet.row_values(0)

    # 获取行数
    rows_length = sheet.nrows

    all_rows = []
    rows_dict = []

    # 获取excel行数据
    for i in range(rows_length):
        if i<1:
            continue
        all_rows.append(sheet.row_values(i))

    # 遍历行数据列表,生成字典
    for row in all_rows:
        # print('=========',type(row))  # row是list类型

        # zip()函数用于将可迭代的对象作为参数,将对象中对应的元素(索引相同的元素)打包成一个个元组,然后返回由这些元组组成的列表
        # 然后通过dict转换为字典
        lis = dict(zip(first_row, row))
        # 每行字典数据放到列表
        rows_dict.append(lis)
    return rows_dict


@pytest.mark.parametrize("param", read_data_from_excel(BASE_PATH + "/data/case.xlsx"))
def test_case(param):
    print(param)
    print(f"uname={param['uname']}, pwd={param['pwd']}")

  

结果:

 

openpyxl模块

openpyxl是一个比较综合的工具,能够同时读取和修改excel文档。 

pip install openpyxl

 

代码实现:

todo

 

posted @ 2024-02-23 21:45  全栈测试笔记  阅读(182)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end