1.数据驱动概述

相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离,这样的测试脚本设计模式称为数据驱动。简单的理解为数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中,使用外部数据源实现对输入输出与期望值的参数化,避免在测试中使用硬编码的数据。这种方法对于测试步骤相同而使用不同的输入值和期望值的测试场景尤为重要

实施数据驱动测试步骤如下:

(1)编写测试脚本,脚本需要支持从程序对象、文件或数据库读入测试数据
(2)将测试脚本使用的测试数据存入程序对象、文件或数据库等外部介质中
(3)运行脚本过程中,循环调用存储在外部介质中的测试数据
(4)验证所有的测试结果是否符合预期结果

2.所需库的安装及介绍

a. 安装ddt库
ddt(Data Driver Test)的库可以将测试中的变量进行参数化,使用之前先进行在线安装。

为了创建数据驱动测试,需要在测试类上使用 @ddt 装饰符,在测试方法上使用 @data 装饰符。@data 装饰符可以把参数当做测试数据,参数可以是单个值,列表,元组,字典,对于列表和元组,需要使用 @unpack 装饰符把元组和列表解析成多个参数。

安装命令:

pip install ddt

b.安装xlrd库
为了支持对Excel 数据表的支持,需要安装 xlrd 库
xlrd 库提供了对工作簿,工作表以及单元格的读取方法,如果需要往表格中写入数据,需要安装xlwt 库,此外 openpyxl 库提供了对表格的读写操作 (注意openpyxl只能操作xlsx文件而不能操作xls文件)。

安装命令:

pip install xlrd

3. 一个简单的无关web自动化的操作示例

主要演示了ddt的基础的使用,主要关注格式的使用

import unittest
import ddt ''' '''
@ddt.ddt
class MyTestCase(unittest.TestCase):
def setUp(self):
pass def tearDown(self):
pass @classmethod
def setUpClass(cls):
pass @classmethod
def tearDownClass(cls):
pass @ddt.data(
[1,2],
[3,4],
[5,6]
)
@ddt.unpack
def test_add(self,a,b):
print(a+b) if __name__ == '__main__':
unittest.main()

一个带参数的web用例演示


# -*- coding: utf-8 -*-
# @Time : 2019/11/21 0021 7:12
# @Author : DDD
# @Site :
# @File : second_demo.py
# @Software: PyCharm import ddt
import time
import unittest
from selenium import webdriver
from business.register_business import RegisterBusiness @ddt.ddt
class MyDdtCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("所有步骤前置操作(测试计划):测试计划之前只执行一次") @classmethod
def tearDownClass(cls):
print("所有步骤后置操作(测试计划):测试计划结束后只执行一次") def setUp(self):
print("每条用例执行的前置步骤")
self.driver = webdriver.Chrome()
url = "http://www.5itest.cn/register"
self.driver.get(url)
self.driver.maximize_window()
self.register_business = RegisterBusiness(self.driver) def tearDown(self):
print("每条测试用例的后置步骤")
self.driver.close() @ddt.data(["1@test", "name1", ""], ["2@test", "name2", ""])
@ddt.unpack
def test_ddt_case(self,email,name,pwd):
test_login = self.register_business.base_case(email,name,pwd)
time.sleep(3)
return self.assertTrue(test_login) if __name__ == '__main__':
unittest.main()

selenium3 web自动化测试框架 五: 数据驱动简介及基础使用的更多相关文章

  1. selenium3 web自动化测试框架 二:页面基础操作、元素定位方法封装、页面操作方法封装

    学习目的: 掌握自动化框架中需要的一些基础web操作 正式步骤: 使用title_contains检查页面是否正确 # -*- coding:utf-8 -*- import time from se ...

  2. selenium3 web自动化测试框架 三:项目实战中PO模型的设计与封装

    po模型设计思想 Page Object 模式主要是将每个页面设计为一个class,其中包含页面中的需要测试的元素(按钮,输入框,标题等),这样在Selenium测试页面中可以通过调取页面类来获取页面 ...

  3. selenium3 web自动化测试框架 四:Unittest介绍及项目实战中的运用

    unittest介绍及运用,可以参考之前写的文章,除了未结合web自动化演示,基础知识都有了 https://www.cnblogs.com/wuzhiming/p/8858305.html unit ...

  4. selenium3与Python3实战 web自动化测试框架✍✍✍

    selenium3与Python3实战 web自动化测试框架  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课 ...

  5. selenium3与Python3实战 web自动化测试框架 ☝☝☝

    selenium3与Python3实战 web自动化测试框架 selenium3与Python3实战 web自动化测试框架 学习 教程 一.环境搭建 1.selenium环境搭建 Client: py ...

  6. web自动化 基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架

    基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架   by:授客 QQ:1033553122     博客:http://blog.sina.com.cn/ishou ...

  7. 基于Selenium+Python的web自动化测试框架

    一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...

  8. Windows环境搭建Web自动化测试框架Watir

    Windows环境搭建Web自动化测试框架Watir 一.前言     Web自动化测试一直是一个比较迫切的问题,对于现在web开发的敏捷开发,却没有相对应的敏捷测试,故开此主题,一边研究,一边将We ...

  9. Web 自动化测试框架 sweetest 介绍

    项目开源: https://github.com/tonglei100/sweetest 文章转载:https://segmentfault.com/a/1190000011612061 介绍 swe ...

随机推荐

  1. MATLAB中.m文件生成.dll

    1.配置编译环境 在命令行窗口输入: mbuild -setup 如果出现以下提示信息说明成功: 如果提示信息为: 错误使用mbuild(line 164) Unable to complete su ...

  2. duilib学习领悟(2)

    再次强调,duilib只不过是一种思想! 在上一节中,我剖析了duilib中窗口类的注册,其中遗留两个小问题没有细说的? 第一个问题:过程函数中__WndProc()中有这么一小段代码: pThis ...

  3. Python中正则匹配使用findall,捕获分组(xxx)和非捕获分组(?:xxx)的差异

    转自:https://blog.csdn.net/qq_42739440/article/details/81117919 下面是我在用findall匹配字符串时遇到的一个坑,分享出来供大家跳坑. 例 ...

  4. BZOJ 3576: [Hnoi2014]江南乐 (SG函数)

    题意 有nnn堆石子,给定FFF,每次操作可以把一堆石子数不小于FFF的石子平均分配成若干堆(堆数>1>1>1). 平均分配即指分出来的石子数中最大值减最小值不超过111.不能进行操 ...

  5. 解压 .tar.xz 格式的压缩文件

    第一种方法: xz -d mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz tar -xvf mysql-8.0.16-linux-glibc2.12-x86_64 ...

  6. 将vim打造成python开发工具

    1.创建vim插件工作目录 [root@ray ~]# mkdir -p ~/.vim/bundle 2.下载插件 [root@ray ~]# cd ~/.vim/bundle [root@ray b ...

  7. 浅谈JavaScript严格模式(use strict)

    "use strict" 的目的是指定代码在严格条件下执行. 严格模式下你不能使用未声明的变量. 严格模式声明 严格模式通过在脚本或函数的头部添加 "use strict ...

  8. String.getBytes()方法中的中文编码问题(转)

    String的getBytes()方法是得到一个系统默认的编码格式的字节数组getBytes("utf-8")  得到一个UTF-8格式的字节数组 把String转换成bytes, ...

  9. webservice 概念+测试案例

    webservice的概念?(一句话概括什么是WebService) WebService是一种跨编程语言.跨操作系统平台的远程调用技术.远程调用技术: 远程调用是指一台设备上的程序A可以调用另一台设 ...

  10. 2018 Nowcoder Multi-University Training Contest 5

    Practice Link A. gpa 题意: 有\(n\)门课程,每门课程的学分为\(s_i\),绩点为\(c_i\),要求最多删除\(k\)门课程,使得gpa最高. gpa计算方式如下: \[ ...