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

一、摘要

一般情况下我们为了更好的管理测试数据会选择将测试数据存储在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 = u‘D:\\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()

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

时间: 2024-10-31 07:41:10

Python&Selenium 数据驱动【unittest+ddt+Excel】的相关文章

Python 数据驱动 unittest + ddt

一数据驱动测试的含义: 在百度百科上的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子.利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程.数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试使软件工程师派生出执行程序所有功能需求的输入条件. 在微软网站上的解释是: 数据驱动的单元测试是为数据源中的每一行重复运行的一种单元测试.数据驱动的单元测试的常用情况是使用多个输入值测试 API.不

python+selenium九:ddt数据驱动

读取excel内容 import xlrdclass ExcelUtil(): def __init__(self, excelPath, sheetName): #def __init__(self, excelPath, sheetName): self.data = xlrd.open_workbook(excelPath) self.table = self.data.sheet_by_name(sheetName) # 获取第一行作为key值 self.keys = self.tabl

Selenium2+python自动化-数据驱动(ddt)

一.环境准备 1.安装ddt模块,打开cmd输入pip install ddt在线安装 二.数据驱动原理 1.测试数据为多个字典的list类型 2.测试类前加修饰@ddt.ddt 3.case前加修饰@ddt.data() 4.运行后用例会自动加载成三个单独的用例 # coding:utf-8 import ddt import unittest # 测试数据 test_data = [{"username": "zhangsan", "pwd"

第二个UI脚本--Python+selenium之unittest+HTMLtestRunner及python的继承

前面有一篇对于常见元素的识别和操作的python自动化脚本,这一篇就接着聊下python的类继承,已经它的第三款unittest框架,和报告收集包HTMLtestRunner的应用. 还是直接上代码吧. unittest和HTMLtestrunner的应用: # coding = utf-8 import time import unittest import HTMLTestRunner import os import sys from selenium import webdriver #

python之数据驱动ddt操作(方法一)

下载ddt并安装 Pip install ddt 或者官网下载安装 http://ddt.readthedocs.io/en/latest/ https://github.com/txels/ddt DDT的使用 DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据) 只有yaml和yml结尾的文件以yaml形式上传,其他情况下默认为json 通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有

python之数据驱动ddt操作(方法三)

import unittestfrom selenium import webdriverfrom selenium.webdriver.common.by import Byimport unittest,timefrom parameterized import parameterized #安装 : pip install parameterized #数据驱动模型# ddt excel+ddt yaml+ddt txt+ddt #@unpack 表示用来解压元组到多个参数#应用:ui级别

python之数据驱动ddt操作(方法二)

import unittestfrom ddt import ddt,unpack,datafrom selenium import webdriverfrom selenium.webdriver.common.by import Byimport unittest,time #数据驱动模型# ddt excel+ddt yaml+ddt txt+ddt #@unpack 表示用来解压元组到多个参数#应用:ui级别的自动化测试中可以实现编写一个测试用例实现多个不同的测试点验证#例如在163邮箱

一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

Web登录测试是很常见的测试!手动测试大家在熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化登录测试,给大家提供点参考!下面就包括测试代码和每种测试情况的截图: ''' cnblog的登录测试,分下面几种情况: (1)用户名.密码正确 (2)用户名正确.密码不正确 (3)用户名正确.密码为空 (4)用户名错误.密码正确 (5)用户名为空.密码正确(还有用户名和密码均为空时与此情况是一样的

python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告

前言 1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 运行完后,重新生成一个excel报告,结果写入excel 用unittest+ddt数据驱动模式执行 HTMLTestRunner生成可视化的html报告 对于没有关联的单个接口请求是可以批量执行的,需要登录的话写到setUpclass里的session里保持cookies token关联的