数据驱动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 ...
随机推荐
- kafka集群under replicated分析
近期随着业务消息量增大,现网几套kafka集群频繁收到under repliacted告警,集合近期定位分析过程,主要有以下几个方面:1. 查看是否有主机挂掉,或近期是否有主机重启,通过kafdrop ...
- WPF图片的缩放节省内存
一.前言 正好项目用到要加载大量图片,虽然说可以使用WPF提供的自带的UI虚拟化功能,但是直接加载大量的图片到内存还是会 消耗很多的内存,而且WPF支持UI虚拟化的ListBox等容器的布局是Virt ...
- [SQL Server]储存过程中使用临时表循环操作数据
本文为原创文章,转载请注明出处!我的博客地址:http://www.cnblogs.com/txwd 由于工作原因,到目前为此已有一年多没有写SQL Server的储存过程了,已有些生疏.日前工作中有 ...
- solve--ifconifg命令提示没有该命令解决方法
一.如果你/bin目录下有ifconfig,则是命令路径没有在环境变量中添加,很多新装的linux系统都会存在这种问题 打开/etc/profile文件 命令: vi /et ...
- Linux内核红黑树2—移植笔记
转自:https://www.cnblogs.com/hellokitty2/p/15362596.html 另外可参考:https://zhuanlan.zhihu.com/p/26599934 一 ...
- Jmeter学习:插件
第三方插件官方下载网址:https://jmeter-plugins.org/install/Install/ 第三方插件官方文档网址:https://jmeter-plugins.org/wiki/ ...
- AUTOCAD——半径标注命令
创建圆或圆弧的半径标注. 执行方式 命令行:DIMRADLUS 菜单栏:标注→半径标注 工具栏:半径标注图标 "半径标注操作命令位置"界面 执行以上命令后,命令行会显示以下信息: ...
- print语法
循环体 是 缩进的 :缩进是 Python 组织语句的方式.在交互式命令行里,得为每个缩输入制表符或空格.使用文本编辑器可以实现更复杂的输入方式:所有像样的文本编辑器都支持自动缩进.交互式输入复合语句 ...
- iOS基础 - SceneDelegate
前言 1 - 自从 Xcode11 发布以来,当你使用新 XCode 创建一个新的 iOS 项目时 SceneDelegate 会被默认创建 2 - 在 iOS 13 后 SceneDelegate ...
- Plus 3.0 (ThinkSNS+)centos8.5+php7.4在阿里云部署过程
参考:https://zhiyicx.github.io/ts-api-docs/guide/installation/using-nginx-and-fpm-publish-website.html ...