zoukankan      html  css  js  c++  java
  • 数据驱动ddt+excel数据读取

    我们可以将测试数据用excel存储,再用ddt去传入,不过我们需要安装对应的库,因为python是无法操作excel的

    1.安装第三方库xlrd

    2.创建一个excel表格,将需要测试的数据保存

    3.封装读取excel

    # coding:utf-8
    import xlrd
    class ExcelUtil():
    def __init__(self, excelPath, sheetName="Sheet1"):
    self.data = xlrd.open_workbook(excelPath)
    self.table = self.data.sheet_by_name(sheetName)
    # 获取第一行作为key值
    self.keys = self.table.row_values(0)
    # 获取总行数
    self.rowNum = self.table.nrows
    # 获取总列数
    self.colNum = self.table.ncols
    def dict_data(self):
    if self.rowNum <= 1:
    print("总行数小于1")
    else:
    r = []
    j=1
    for i in range(self.rowNum-1):
    s = {}
    # 从第二行取对应values值
    values = self.table.row_values(j)
    for x in range(self.colNum):
    s[self.keys[x]] = values[x]
    r.append(s)
    j+=1
    return r
    if __name__ == "__main__":
    filepath = "data_excel"
    #sheetName = "Sheet1"
    data = ExcelUtil(filepath)
    print data.dict_data()
    for i in data.dict_data():
    print i

    4.ddt和excel结合

    from selenium import webdriver
    from common.base import BasePage
    from page.page_login import LoginPage,login_url
    from common.read_excel_ddt import ExcelUtil
    import unittest
    import ddt

    #用excle表格传入
    filepath="data_excel.xlsx"
    data=ExcelUtil(filepath)
    datadict=data.dict_data()
    print datadict

    @ddt.ddt
    class Login_test(unittest.TestCase):
    '''登录页面的测试用例'''

    @classmethod
    def setUpClass(cls):
    #只打开一次浏览器
    cls.driver=webdriver.Firefox()
    #实例化page_login中的LoginPage类
    cls.login_driver=LoginPage(cls.driver)
    cls.driver.open(login_url)

    def setUp(self):
    #每次都从登录页开始
    self.driver.get(login_url)

    def tearDown(self):
    #每次清空登录的cookie,数据还原
    self.driver.delete_all_cookies()
    @classmethod
    def tearDownClass(cls):
    #关闭浏览器
    cls.driver.quit()

    def login_case(self,user,psw,exc):
    '''登录的流程'''
    self.login_driver.input_username(user)
    self.login_driver.input_password(psw)
    self.login_driver.click_submit()
    result=self.login_driver.is_login_sucess()#获取结果
    #如果用excel的话 由于返回的是0,1所以需要用bool
    except_result=bool(exc)
    self.assertEqual(result,except_result)#断言


       @ddt.data(*datadict)#把excel中的数据挨个传入
    def test_login_01(self,data):
    '''登陆失败用例:输入正确的账户,错误的密码'''
         self.login_case(data["username"],data["psw"],data["expect"])
        def test_login_02(self,data):
    '''登陆失败用例:输入正确的账户,正确的密码'''
        self.login_case(data["username"],data["psw"],data["expect"])

    if __name__=="__main__":
    unittest.main()
  • 相关阅读:
    Stl源码剖析读书笔记之Alloc细节
    Lua热更系统
    Linux C++线程池
    linux sort,uniq,cut,wc.
    (转)Linux grep
    用LogParser分析IIS请求压力
    (转)MySQL主从复制的常见拓扑、原理分析以及如何提高主从复制的效率总
    AIS相关资料
    python学习笔记
    (转)MySQL InnoDB修复笔记
  • 原文地址:https://www.cnblogs.com/linbao/p/8093924.html
Copyright © 2011-2022 走看看