python测试框架-->pytest结合数据驱动-excel(六)

1、数据驱动的含义

数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。简单来说,就是参数化的应用。数据量小的测试用例可以使用代码的参数化来实现数据驱动,数据量大的情况下建议大家使用一种结构化的文件(例如yaml,json、excel、csv等)来对数据进行存储,然后在测试用例中读取这些数据。

2、安装openpyxl 库

openpyxl官方文档: https://openpyxl.readthedocs.io/en/stable/

(1)命令行安装

# 在命令行安装
pip install openpyxl

(2)在settings安装
在这里插入图片描述

3、openpyxl 库的操作步骤

  • 读取工作簿
  • 读取工作表
  • 读取单元格

4、获取单元格中某个数据

在testdata目录下新建demo.xlsx和demo.py文件
在这里插入图片描述

demo.xlsx的内容如下:
在这里插入图片描述

demo.py内容如下:

import openpyxl

# 第一步:获取工作簿
book = openpyxl.load_workbook('demo.xlsx')

# 第二步:获取工作表
sheet = book.active
print(sheet)

# 第三步:获取单元格数据
a_2 = sheet['A2'].value
print("A1单元格是数据是:",a_2)
c_3 = sheet.cell(column=3, row=3).value
print("C3单元格是数据是:", c_3)

# 获取多个单元格
cells = sheet["A1":"C4"]
print("表格的数据类型",type(cells),)
print("表格数据为:",cells)

执行结果如下:
在这里插入图片描述

5、遍历表格所有的数据

在这里插入图片描述
demo.xlsx的内容如下:
在这里插入图片描述

test_demo.py的内容如下:


import openpyxl

def test_get_excel():
    # 获取工作簿
    case = openpyxl.load_workbook('demo.xlsx')
    # 读取工作表
    sheet = case.active
    # 遍历的数据放进values
    values = []
    # row是行
    for row in sheet:
        # line是列
        line = []
        #遍历每一行的数据
        for cell in row:
            line.append(cell.value)
        values.append(line)
    print(values)

执行结果如下:
在这里插入图片描述

6、Pytest 参数化结合 Excel 文件

在这里插入图片描述

demo.xlsx的内容如下:
在这里插入图片描述
operation.py内容如下:

# perject:testdata
# name:operation.py.py
# date:2022-4-19
def my_add(x, y):
    result = x + y
    return result
import openpyxl
import pytest

from operation import my_add


def get_excel():
    """
    解析Excel数据
    :return: [[1, 1, 2],[3,6,9], [100, 200, 300]]
    """
    # 获取工作簿
    book = openpyxl.load_workbook("demo.xlsx")
    # 获取工作表sheet1
    sheet = book.active
    # 读取数据,A1是第一个数据,C3是最后一个数据
    cells = sheet["A1":"C3"]
    print(cells)
    values = []
    # 遍历整个excel文件
    for row in cells:
        data = []
        # 遍历第一行,cell是列,row是行
        for cell in row:
            data.append(cell.value)
        values.append(data)
    print(values)
    return values

class TestWithEXCEL:
    @pytest.mark.parametrize('x,y,expected', get_excel())
    def test_add(self, x, y, expected):
        # int(x), int(y)是将转进来的数字转成整型
        assert my_add(int(x), int(y)) == int(expected)

执行结果如下:
在这里插入图片描述

7、向表格写入数据

在这里插入图片描述

在这里插入图片描述
安装xlrd和xlutils

pip install xlrd
pip install xlutils
import xlrd
import xlwt
from xlutils.copy import copy

def test_write():
    rb = xlrd.open_workbook('demo.xlsx')
    r_sheet = rb.sheet_by_index(0)
    wb = copy(rb)
    sheet = wb.get_sheet(0)
    sheet.write(5,2,"string")
    wb.save('demo.xlsx')

使用python的xlrd读取Excel文件时,执行上述代码的报以下的问题:

xlrd.biffh.XLRDError: Excel xlsx file; not supported

在网上查了一些资料,报错原因是xlrd版本的问题,需要降低一下版本。pip install xlrd默认该包是指向python2。

解决方法:

pip3 install xlrd==1.2.0

再次执行又报错了,报错如下:

 PermissionError: [Errno 13] Permission denied: 'demo.xlsx

在本地把demo.xlsx文件关掉就可以啦

以上是pytest结合数据驱动-excel的学习记录,希望能够帮助到你们~~

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
数据驱动是一种测试方法,它通过改变数据驱动自动化测试的执行,从而改变测试结果。在pytest中,可以使用Excel作为数据驱动的源文件。首先,需要安装PyYAML模块,使用pip install PyYAML命令进行安装。然后,创建一个用例文件和数据文件来完成数据驱动测试案例。可以将用例文件和数据文件放在一个文件夹中,例如testdata文件夹。在testdata文件夹下创建data.yaml和test_yaml.py文件。在main_run.py文件中编写执行函数,使用pytest.main()函数执行测试用例,指定参数'--alluredir'用于生成测试报告。最后,使用allure serve命令生成测试报告。具体的实现步骤可以参考引用、和中的内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [python测试框架--pytest结合数据驱动-yaml(五)](https://blog.csdn.net/qq_43911915/article/details/124246778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [pytest+requests+Excel+allure接口自动化测试框架实践](https://blog.csdn.net/fallenjency/article/details/124631757)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子软件测试菇凉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值