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

测试驱动之excel文件与ddt模块在自动化中的引用(十三)

作者头像
无涯WuYa
发布2018-10-25 16:15:54
1.5K0
发布2018-10-25 16:15:54
举报

在前面详细的介绍了ddt模块的安装以及在自动化项目中的使用,我们再已验证V客网登录界面为实例,来说明ddt模块在自动化中的实战,验证点分别为如下几点:

验证点一:输入无效的用户名和密码,验证返回的错误信息

验证点二:输入有效的用户名和无效的密码,验证返回的错误信息

验证点三:输入无效的邮箱和无效的密码,验证返回的错误信息

我们把读取数据的方法,登录以及获取错误信息,编写的 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)

#V客网登录

def clickLogin(driver,username,password):

driver.find_element_by_id('l-1').send_keys(username)

t.sleep(2)

driver.find_element_by_id('l-2').send_keys(password)

t.sleep(2)

driver.find_element_by_id('l-4').click()

#获取返回的错误信息

def getText(driver):

returndriver.find_element_by_xpath(".//*[@id='login-tips']").text

见验证weke登录界面的测试代码:

#!/usr/bin/python

#coding:utf-8

from selenium import webdriver

import time as t

from ddt import ddt,data,unpack

import unittest,sys,location

reload(sys)

sys.setdefaultencoding('utf-8')

@ddt

class WekeTest(unittest.TestCase):

defsetUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.implicitly_wait(30)

self.driver.get('http://my.weke.com/loginVerify.html')

@data(('admin','admin',u'账号必须是邮箱或者手机号'),('13484545195','admin',u'用户名或密码错误'),('4856758@qqq.comdf','admin',u'用户名或密码错误'))

@unpack

deftestCase_01(self,username,password,expect):

"""

验证点一:输入无效的用户名和密码,验证返回的错误信息

验证点二:输入有效的用户名和无效的密码,验证返回的错误信息

验证点三:输入无效的邮箱和无效的密码,验证返回的错误信息

:return:

"""

location.clickLogin(self.driver,username,password)

self.assertEqual(location.getText(self.driver),expect)

deftearDown(self):

self.driver.quit()

if __name__=='__main__':

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

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

ok,我现在结合ddt模块,把上面自动化使用到的数据,存储在excel 中,见excel的数据截图:

这样修改后的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)

defgetDdtExcel(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

#V客网登录

def clickLogin(driver,username,password):

t.sleep(2)

driver.find_element_by_id('l-1').send_keys(username)

t.sleep(2)

driver.find_element_by_id('l-2').send_keys(password)

t.sleep(2)

driver.find_element_by_id('l-4').click()

#获取返回的错误信息

def getText(driver):

returndriver.find_element_by_xpath(".//*[@id='login-tips']").text

修改后的测试代码见wekeTest.py模块的源码:

#!/usr/bin/python

#coding:utf-8

from selenium import webdriver

import time as t

from ddt import ddt,data,unpack

import unittest,sys,location

reload(sys)

sys.setdefaultencoding('utf-8')

@ddt

class WekeTest(unittest.TestCase):

defsetUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.implicitly_wait(30)

self.driver.get('http://my.weke.com/loginVerify.html')

@data(*location.getDdtExcel())

@unpack

deftestCase_01(self,username,password,expect):

"""

验证点一:输入无效的用户名和密码,验证返回的错误信息

验证点二:输入有效的用户名和无效的密码,验证返回的错误信息

验证点三:输入无效的邮箱和无效的密码,验证返回的错误信息

:return:

"""

location.clickLogin(self.driver,username,password)

self.assertEqual(location.getText(self.driver),expect)

deftearDown(self):

self.driver.quit()

if __name__=='__main__':

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

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

见执行代码后的截图:

OK,我们比较二次实现的方式,可以发现,在第二次的代码中,我们只需要调用调用getDdtExcel() 的函数,该函数实现了从excel读取存储的数据。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档