python数据驱动读取用例_Python自动化测试学习(五)— 读取Excel做数据驱动测试...

1、读取Excel文件

安装xlrd库,调用xlrd库去读取文件并返回数据

import xlrd

class ReadExcel:

@staticmethod

def get_data():

# 创建一个空的List

row_list = []

# 打开工作簿

book = xlrd.open_workbook("C:\\Users\\Think\\Desktop\\test_python_data.xlsx")

# 获取第一个sheet

'''

1、sheet.nrows: 工作表中有值总行数

2、sheet.ncols:工作表中有值总列数

3、sheet.row_values(rowx, start_colx=0, end_colx=None):

返回给定行中单元格值的一部分(开始行,开始列默认是0,结束列)

'''

sheet = book.sheet_by_index(0)

for i in range(1, sheet.nrows):

row_value = sheet.row_values(i, 0, sheet.ncols-1)

row_list.append(row_value)

return row_list

# if __name__ == '__main__':

# ReadExcel().get_data()

2、使用ddt库中的@data解析数据,如下简单示例:

import unittest

from ddt import ddt,data,unpack

from src.utils.ReadExcel import ReadExcel

@ddt

class Testddt2(unittest.TestCase):

def setUp(self):

pass

'''

*的作用类似于将原始数据的最外层括号拿掉,例如我们的原始数据是:

[['123456', 111], ['111', 'aaa'], ['123458', 'aaa'], ['123459', 'aaa']]

加上*之后变成:

['123456', 111], ['111', 'aaa'], ['123458', 'aaa'], ['123459', 'aaa']

然后可使用@unpack读取值,参数两位,运行结果:

15210 111

111 aaa

123458 aaa

123459 aaa

'''

#调用ReadExcel类中的get_data()方法获取数据

@data(*ReadExcel().get_data())

@unpack

def test_1(self, username, password, message):

print()

print(username, password, message)

'''

不加*,不拆包时运行结果:

[['123456', 111.0], ['111', 'aaa'], ['123458', 'aaa'], ['123459', 'aaa']]

'''

@data(ReadExcel().get_data())

def test_2(self, value):

print()

print("---test_2---")

print(value)

'''

不加*,使用@unpack时,运行结果:

['123456', 111.0] ['111', 'aaa'] ['123458', 'aaa'] ['123459', 'aaa']

'''

@data(ReadExcel().get_data())

@unpack

def test_3(self, value1, value2, value3, value4):

print()

print("---test_3---")

print(value1, value2, value3, value4)

3、实际项目中使用:

from src.pages.LoginPage import LoginPage

from selenium import webdriver

from time import sleep

import unittest

from src.utils.ReadExcel import ReadExcel

from ddt import ddt, data, unpack

'''

1、使用数据驱动模式,测试用户登录测试用例

2、测试模板Excel

'''

@ddt

class TestLoginCaseDataDrive(unittest.TestCase):

def setUp(self):

self.driver = webdriver.Chrome()

self.url = "http://mail.163.com/"

# 打开浏览器

LoginPage(self.driver).open_browser(self.url)

sleep(1)

'''

1、读取ReadExcel类中的get_data(),获取数据

2、将获取到的数据进行拆包,并根据数据个数传参数

3、test_login根据参数个数,运行多次(根据逻辑说明的)

'''

@data(*ReadExcel().get_data())

@unpack

def test_login(self, username, password, expect_message):

print(username,password,expect_message)

LoginPage(self).login_operation(username, password)

# 定位错误提示消息,设置断言

actual_message = self.driver.find_element_by_xpath("//div[@class='ferrorhead']")

print(actual_message.text)

self.assertEqual(actual_message.text, expect_message, msg="测试失败!")

print("测试成功!")

def tearDown(self):

self.driver.quit()

4、简单的Excel数据格式

1181884-20201127172040637-486971229.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值