前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试驱动之excel文件在自动化中的使用(十二)

测试驱动之excel文件在自动化中的使用(十二)

作者头像
无涯WuYa
发布2018-10-25 16:19:10
1.8K0
发布2018-10-25 16:19:10
举报

一般性的,数据存储在excel中,也是一种选择,但是必须安装对应的库,要不python是无法操作excel文件的,安装的第三方库为为xlrd,安装命令为:

pipinstall xlrd

安装过程见截图:

Excel文件的后缀格式为.xlsx,实例中excel的数据为:

所以,我们需要读取excel中的数据,首先需要import xlrd,然后才可以读取excel文件中的数据。在excel文件中,cell是单元格,sheet是工作表,一个工作表由N个单元格来组成。下面来实现读取excel文件中的数据,见如下的代码:

def getExcel(rowValue,colValue,file_name='d:\\test.xlsx'):

"""

:paramrowValue:表格的行

:paramcolValue: 表格的列

:paramfile_name: excel文件

:return:

"""

#创建book

book=xlrd.open_workbook(file_name)

#获取sheet对象

sheet=book.sheet_by_index(0)

#获取sheet对象中的数据

returnsheet.cell_value(rowValue,colValue)

代码截图:

我把读取excel中的数据写成一个函数,先导入xlrd的库,然后创建book,以及获取sheet对象,依次获取sheet对象中的数据,在如上的excel数据中,如果我想获取“请你填写密码”,那么直接调用该函数,并且传对应的参数分别为(0,1),见执行的代码截图:

如果读取excel一个sheet对象的所有数据,修改后的代码为:

defgetExcels(file_name='d:\\test.xlsx'):

rows=[]

book=xlrd.open_workbook(file_name)

sheet=book.sheet_by_index(0)

forrow in range(1,sheet.nrows):

rows.append(list(sheet.row_values(row,0,sheet.ncols)))

returnrows

我们已百度登录为实例,来说明excel文件在自动化中的引用,测试点分别为:

1、输入百度账号,未输入百度密码,点击登陆,验证返回的错误信息;

2、输入错误的百度账号密码,点击登录,验证返回的错误信息;

我们读excel文件的函数,登录百度的函数写在location.py的模块中,见location.py模块的代码:

#!/usr/bin/env python

#coding:utf-8

import csv,xlrd

from selenium import webdriver

import time as t

def getCsv(file_name):

rows=[]

withopen(file_name,'rb') as f:

readers=csv.reader(f,delimiter=',',quotechar='|')

next(readers,None)

forrow in readers:

rows.append(row)

returnrows

defgetExcel(rowValue,colValue,file_name='d:\\test.xlsx'):

"""

:paramrowValue:表格的行

:paramcolValue: 表格的列

:paramfile_name: excel文件

:return:

"""

book=xlrd.open_workbook(file_name)

sheet=book.sheet_by_index(0)

returnsheet.cell_value(rowValue,colValue)

def clickButton(driver):

driver.find_element_by_xpath(".//*[@id='u1']/a[6]").click()

t.sleep(2)

def clickLogin(driver,username,password):

name=driver.find_element_by_id('TANGRAM__PSP_8__userName')

name.clear()

name.send_keys(username)

t.sleep(2)

passwd=driver.find_element_by_id('TANGRAM__PSP_8__password')

passwd.clear()

passwd.send_keys(password)

t.sleep(2)

driver.find_element_by_id('TANGRAM__PSP_8__submit').click()

t.sleep(2)

#获取返回的错误信息

def getText(driver):

returndriver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_8__error']").text

把测试代码写在baiduTest.py的模块中,见该模块的测试代码:

#!/usr/bin/python

#coding:utf-8

from selenium import webdriver

import time as t

import location

import unittest,sys

reload(sys)

sys.setdefaultencoding('utf-8')

class BaiduTest(unittest.TestCase):

defsetUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.implicitly_wait(30)

self.driver.get('http://www.baidu.com/')

deftestCase_01(self):

"""

验证只输入百度账号密码,点击登录返回的错误信息

:return:

"""

driver=self.driver

location.clickButton(driver)

location.clickLogin(driver,location.getExcel(0,0),location.getExcel(1,0))

self.assertEqual(location.getText(driver),location.getExcel(1,1))

deftestCase_02(self):

"""

验证只输入百度账号,未输入密码,点击登录返回的错误信息

:return:

"""

driver=self.driver

location.clickButton(driver)

location.clickLogin(driver,location.getExcel(0,0),location.getExcel(2,0))

self.assertEqual(location.getText(driver),location.getExcel(0,1))

deftearDown(self):

self.driver.quit()

if __name__=='__main__':

suite=unittest.TestLoader().loadTestsFromTestCase(BaiduTest)

unittest.TextTestRunner(verbosity=2).run(suite)

这样,我们就实现了把测试中使用到的数据,存储在excel中,然后利用xlrd模块来读取excel中的数据,达到测试代码与数据的分离。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档