码迷,mamicode.com
首页 > 编程语言 > 详细

Python&Selenium 数据驱动【unittest+ddt+Excel】

时间:2018-12-31 22:42:00      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:row   port   alt   oms   nbsp   pytho   odi   coding   list   

一、摘要

一般情况下我们为了更好的管理测试数据会选择将测试数据存储在Excel文件当中去,本节内容将展示给读者将测试数据存储在Excel文档中的案例。

二、创建存储测试数据的Excel

创建一个Excel文件TestData.xlsx,并将如下表格数据写入到Excel文件中,作为测试数据。

序号 搜索词 期望结果
1 北京 北京
2 上海 上海
3 广州 广州

 

 

 

 

 

三、封装解析Excel文件模块

要解析Excel文件,需要先给Python环境安装openpyxl模块,启动命令行,输入命令pip install openpyxl并回车

技术分享图片

在工程中创建ParseExcelUtil.py文件,并写入如下代码:

# encoding = utf-8
from openpyxl import load_workbook


class ParseExcel(object):

    def __init__(self, excelPath, sheetName):
        self.wb = load_workbook(excelPath)
        #  self.sheet = self.lwb.get_sheet_by_name(sheetName)
        self.sheet = self.wb[sheetName]
        self.maxRowNum = self.sheet.max_row

    def getDatasFromSheet(self):
        dataList = []
        for line in list(self.sheet.rows)[1:]:
            tmpList = []
            tmpList.append(line[1].value)
            tmpList.append(line[2].value)
            dataList.append(tmpList)
        return dataList


if __name__ == __main__:
    excelPath = uD:\\Programs\\Python\\PythonUnittest\\TestData\\测试数据.xlsx
    sheetName = u搜索数据表
    pe = ParseExcel(excelPath, sheetName)
    for i in pe.getDatasFromSheet():
        print(i[0], i[1])

代码解析:

封装了getDatasFromSheet方法,该方法将解析Excel,并将数据存到List中去,后续的测试代码调用的实际上是从List里边获取数据。

四、测试代码

# encoding = utf-8
from selenium import webdriver
import unittest
import time
import traceback
import ddt
import logging
from Util.ParseExcelUtil import ParseExcel
from selenium.common.exceptions import NoSuchElementException


# 初始化日志对象
logging.basicConfig(
    # 日志级别
    level=logging.INFO,
    # 时间、代码所在文件名、代码行号、日志级别名字、日志信息
    format=%(asctime)s %(filename)s[line: %(lineno)d] %(levelname)s %(message)s,
    # 打印日志的时间
    datefmt=%a, %d %b %Y %H:%M:%S,
    # 日志文件存放的目录及日志文件名
    filename=D:\\Programs\\Python\\PythonUnittest\\Reports\\TestResults.TestResults,
    # 打开日志的方式
    filemode=w
)

excelPath = u"D:\\Programs\\Python\\PythonUnittest\\TestData\\测试数据.xlsx"
sheetName = u"搜索数据表"
excel = ParseExcel(excelPath, sheetName)


@ddt.ddt
class TestDataDrivenByExcel(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()

    @ddt.data( * excel.getDatasFromSheet())
    def test_dataDrivenByExcel(self, data):
        testData, expectData = tuple(data)
        url = "http://www.baidu.com"
        self.driver.get(url)
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)

        try:
            self.driver.find_element_by_id("kw").send_keys(testData)
            self.driver.find_element_by_id("su").click()
            time.sleep(3)
            self.assertTrue(expectData in self.driver.page_source)
        except NoSuchElementException as e:
            logging.error(u"查找的页面元素不存在,异常堆栈信息为:" + str(traceback.format_exc()))
        except AssertionError as e:
            logging.info(u"搜索 ‘%s’,期望 ‘%s’ ,失败" % (testData, expectData))
        except Exception as e:
            logging.error(u"未知错误,错误信息:" + str(traceback.format_exc()))
        else:
            logging.info(u"搜索 ‘%s’,期望 ‘%s’ ,通过" % (testData, expectData))

    def tearDown(self):
        self.driver.quit()


if __name__ == "__main__":
    unittest.main()

 

Python&Selenium 数据驱动【unittest+ddt+Excel】

标签:row   port   alt   oms   nbsp   pytho   odi   coding   list   

原文地址:https://www.cnblogs.com/davieyang/p/10203376.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!