数据驱动DDT(Data-Driven Tests):测试数据的参数化
准备第三方库:
首先安装ddt库,其次在脚本中引入ddt
打开官网 https://pypi.org/project/ddt/
from ddt import ddt,data,unpack
@ddt
class MookTestCase(unittest.TestCase):
数据驱动的应用:
1、使用元组存放被测试的数据,一个参数的情况
@data(1,-3,2,0)
def testcase(self,value):

2、使用元组存放被测试的数据,多个参数的情况
@data((3,2),(4,3),(5,3))
@unpack
def testcase(self,value1,value2):

DDT框架实例
#-*- coding: utf-8 -*- import os,time
import logging
import sys
import unittest
import HTMLTestRunner
from appium import webdriver
from ddt import ddt,data,unpack logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__) #统一使用utf-8格式
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding) @ddt
class MyTestCase(unittest.TestCase):
def setUp(self):
#字典
ui = {
'platformName': 'Android', # 平台名称
'platformVersion': '5.1.1', # 系统版本号
# 'deviceName': 'emulator-5554',
'deviceName': '127.0.0.1:62001', # 设备名称。如果是真机,在'设置->关于手机->设备名称'里查看
'appPackage': 'com.xiaobai.logindemo', # apk的包名
'appActivity': 'com.xiaobai.logindemo.LoginActivity', # activity 名称
} #Connect appium
logger.info("连接appium")
self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",ui)
# os.system('adb kill-server')
logger.info("连接appium2")
# self.driver.implicitly_wait(8)
print("---------------SetUp-------------\n") @data(("csdn","123456",False),
("csdn","1234",True))
@unpack
def test_login(self,username,pwd,expectedresult):
logger.info("请输入用户名")
self.driver.find_element_by_id("com.xiaobai.logindemo:id/et_account").send_keys(username) logger.info("请输入密码")
self.driver.find_element_by_id("com.xiaobai.logindemo:id/et_password").send_keys(pwd) logger.info("点击登录按钮")
register = self.driver.find_element_by_id("com.xiaobai.logindemo:id/btn_login").click() try:
if self.driver.find_element_by_id("com.xiaobai.logindemo:id/btn_login").is_displayed():
exist = True
except Exception:
exist = False
self.assertEqual(exist,expectedresult)
time.sleep(3)
self.driver.quit() def tearDown(self):
logger.info("结束")
print("---------------------TearDown-----------\n") if __name__ == '__main__':
# suite = unittest.TestSuite()
# suite.addTest(MyTestCase('test_login'))
#
# now = time.strftime("%Y-%M-%d-%H-%M-%S",time.localtime())
# filename = ".ReportCase.html"
# print('run version {}'.format(sys.version))
# fp = open(now + filename,'wb')
# runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"自动化测试报告",description=u"TestCase Report")
# runner.run(suite)
#
# fp.close()
unittest.main()
#对应的runner import app.testcase.unittestdemo
import unittest # mysuite = unittest.TestSuite()
# mysuite.addTest(app.testcase.loginUI.MyTestCase("test_login"))
cases = unittest.TestLoader().loadTestsFromTestCase(app.testcase.unittestdemo.MyTestCase)
mysuite = unittest.TestSuite([cases])
# mysuite.addTest(app.testcase.loginUI.MyTestCase("test_login")) myrunner = unittest.TextTestRunner(verbosity=2)
myrunner.run(mysuite)
数据驱动DDT(Data-Driven Tests):测试数据的参数化的更多相关文章
- Python DDT(data driven tests)模块心得
关于ddt模块的一些心得,主要是看官网的例子,加上一点自己的理解,官网地址:http://ddt.readthedocs.io/en/latest/example.html ddt(data driv ...
- [Jest] Write data driven tests in Jest with test.each
Often, we end up creating multiple unit tests for the same unit of code to make sure it behaves as e ...
- What is Data Driven Testing? Learn to create Framework
What is Data Driven Testing? Data-driven is a test automation framework which stores test data in a ...
- unittest使用数据驱动ddt
简介 ddt(data driven test)数据驱动测试:由外部数据集合来驱动测试用例,适用于测试方法不变,但需要大量变化的数据进行测试的情况,目的就是为了数据和测试步骤的分离 由于unittes ...
- unittest---unittest数据驱动(ddt)
在做测试的时候,有些地方无论是接口还是UI只是参数数据的输入不一样,操作过程是一样的.重复去写操作过程会增加代码量,我们可以通过参数化的方式解决这个问题,也叫做数据驱动,我们通过python做参数化的 ...
- python webdriver 测试框架-数据驱动DDT的例子
先在cmd环境 运行 pip install ddt 安装数据驱动ddt模块 脚本: #encoding=utf-8 from selenium import webdriver import un ...
- Python数据驱动DDT的应用
在开始之前,我们先来明确一下什么是数据驱动,在百度百科中数据驱动的解释是:数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子.利用黑盒测试法进行 ...
- Python 数据驱动ddt 使用
准备工作: pip install ddt 知识点: 一,数据驱动和代码驱动: 数据驱动的意思是 根据你提供的数据来测试的 比如 ATP框架 需要excel里面的测试用例 代码驱动是必须得写代码 ...
- 数据驱动ddt
在设计用例的时候,有些用例操作过程是一样的,只是参数数据输入的不同,如果用例重复的去写操作过程会增加代码量,对于这种多组数据的测试用例,可以使用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载 ...
- Spock - Document - 03 - Data Driven Testing
Data Driven Testing Peter Niederwieser, The Spock Framework TeamVersion 1.1 Oftentimes, it is useful ...
随机推荐
- 1、docker 安装
1 准备三台linux服务器 2 docker安装 三台机器全部执行docker安装操作 2.1 移除以前docker相关包 sudo yum remove docker \ docker-clien ...
- ENGG1310 Electricity and electronics P1.2 Electronic Communication
课程内容笔记,自用,不涉及任何 assignment,exam 答案 Notes for self use, not included any assignments or exams 一个 3h 的 ...
- OS-lab1
OS-lab1 boot boot文件夹中只有start.S文件,这个文件用于初始化内核.关掉中断,设置内核栈,并跳转到main函数. init init.c 执行初始化操作. main.c 主函数, ...
- idea中怎么查找替换数据?
快捷键全局查询所有:crtl+shift+F 快捷键全局替换所有:crtl+shift+R 1.crtl+f crtl+r 快捷键全局查询所有:crtl+shift+F 快捷键全局替换所有:crtl+ ...
- 1.Python3.5+Pyqt5+PyCharm+Opencv3.3+Qtdesigner开发环境配置
一:Python3.3和Pyqt5的安装 注意:两个的版本一定要对应,一定要对应,一定要对应,重要的事情说三遍. 因为我自己的电脑是64位的,所以我下载的都是64位版本的,且都是3.5版本的:这两个一 ...
- NGINX websocket 配制
http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstre ...
- Educational Codeforces Round 112 (Rated for Div
Educational Codeforces Round 112 (Rated for Div. 2) CodeForces - 1555D Say No to Palindromes 如果一个字符串 ...
- 国产DP4344兼容替代CSM4344 192K双通道输出数模转换芯片
DP4344 是一款完整的 2 通道输出数模转换芯片, 内含插值滤波器.Multi-Bit 数模转换器.输出模 拟滤波器,并支持大部分的音频数据格式.DP4344 基于一个带线性模拟低通滤波器的四阶 ...
- springcloud(三) - 负载均衡Ribbon
功能介绍 基本保证每个服务不同的ip接收到的请求数量是一样的,确保在微服务下没有没有那个服务器负载过多而另外一个闲置. IRule:根据规则获取制定的服务 规则列表 RoundRobinRule:轮询 ...
- STP协议-基础
生成树协议 一 .技术背景一个缺乏冗余性设计的网络:任何一个网络节点出现故障,会造成单链路故障.单设备故障,使整个网络瘫痪. 引入冗余性的同时也引入了二层环路:网络的冗余性增强了,但是却出现了二层环路 ...