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

1、数据驱动的含义

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

2、安装openpyxl 库

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

(1)命令行安装


pip install openpyxl

(2)在settings安装

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

3、openpyxl 库的操作步骤

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

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

在testdata目录下新建demo.xlsx和demo.py文件

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

demo.xlsx的内容如下:

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

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)

执行结果如下:

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

5、遍历表格所有的数据

python测试框架-->pytest结合数据驱动-excel(六)
demo.xlsx的内容如下:
python测试框架-->pytest结合数据驱动-excel(六)

test_demo.py的内容如下:


import openpyxl

def test_get_excel():

    case = openpyxl.load_workbook('demo.xlsx')

    sheet = case.active

    values = []

    for row in sheet:

        line = []

        for cell in row:
            line.append(cell.value)
        values.append(line)
    print(values)

执行结果如下:

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

6、Pytest 参数化结合 Excel 文件

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

demo.xlsx的内容如下:

python测试框架-->pytest结合数据驱动-excel(六)
operation.py内容如下:

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")

    sheet = book.active

    cells = sheet["A1":"C3"]
    print(cells)
    values = []

    for row in cells:
        data = []

        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):

        assert my_add(int(x), int(y)) == int(expected)

执行结果如下:

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

7、向表格写入数据

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

python测试框架-->pytest结合数据驱动-excel(六)
安装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的学习记录,希望能够帮助到你们~~

Original: https://blog.csdn.net/qq_43911915/article/details/124259133
Author: 橙子软件测试菇凉
Title: python测试框架–>pytest结合数据驱动-excel(六)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/772193/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球