数据驱动ddt在excel中的实践

在前面详细的介绍了 ddt 库在自动化测试中的应用,主要是相同的步骤,只需要写一个测试用例就可以满足条件,在邮箱登录的案例中,步骤是一致的,这里使用 ddt 和 excel 进行整合,让测试代码更加简单,见实现的源码:
import xlrd
import unittest
from selenium import webdriver
import time as t
from ddt import ddt,data,unpack
def readExcel(row):
'''
:param row:该参数表示行
'''
  book=xlrd.open_workbook('sina.xlsx','r')
  table=book.sheet_by_index(0)
  return table.row_values(row)
def readExcels():
'''读取 excel 数据添加到 rows 列表中'''
  rows=[]
  book=xlrd.open_workbook('sina.xlsx','r')
  sheet=book.sheet_by_index(0)
  for row in range(1,sheet.nrows):
    rows.append(sheet.row_values(row,0,sheet.ncols))
  return rows
@ddt
class SinaTest(unittest.TestCase):
  def setUp(self):
    self.driver=webdriver.Firefox()
    self.driver.maximize_window()
    self.driver.get('http://mail.sina.com.cn/')
    self.driver.implicitly_wait(30)
    def tearDown(self):
    self.driver.quit()
  def login(self,username,password):
    t.sleep(2)
#邮箱账号输入框
    self.driver.find_element_by_id('freename').send_keys(username)
    t.sleep(2)
    self.driver.find_element_by_id('freepassword').send_keys(password)
    t.sleep(2)
    self.driver.find_element_by_link_text('登录').click()
def getLoginError(self):
'''返回点击登录后的错误提示信息'''
    t.sleep(2)
 
loginError=self.driver.find_element_by_xpath('/html/body/div[1]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')
return loginError.text
@data(*readExcels())
@unpack
def test_sina_login(self,username,password,result):
'''登录业务测试'''
self.login(username,password)
self.assertEqual(self.getLoginError(),result)
if __name__ == '__main__':
unittest.main(verbosity=2)
注解:
注解:对读取 excel 数据邒函数进行了重写,函数 readExcels 是读取 excel 所有的数据并且把这些数据添加到 rows 列表中返回,下来结合 ddt,在 data 函数 readExcles 前加了*号,
这样数据类型就是元组,这样就只需要写一个测试用例的代码而达到多个测试点的测试覆盖
posted @ 2019-05-05 11:09  燕鸻  阅读(531)  评论(0)    收藏  举报