数据驱动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 ...
随机推荐
- excel快速生成相同内容
先选中你所需要的单元格,如图所示: 输入自己想要的字符,然后按ctrl+enter,如图所示:
- 关于JWT的.net 使用(简单明了直接代码)
首先第一步:下载插件! 在ui层---控制器所在层添加一个类 然后复制如下 using Microsoft.Extensions.Configuration; using Microsoft.Iden ...
- requests库获取指定关键词的图片,并保存到本地
var code = "45f4267f-9476-44ca-ac68-6d32aad2d4e1" 源码地址:https://gitee.com/myrensheng/data_a ...
- Robot-Framework 基础操作和常用的语法
1.打开浏览器 Open Browser 2.浏览器最大化 Maximize Browser Window 3.关闭浏览器 Test Teardown Close Browser 4.输入文本框 I ...
- insert_base_x.txt
insert into g_temp.test_basevalues('20220202'::date, 1, 'apple'),('20220203'::date, 5, 'banana'),('2 ...
- 在axios拦截器js文件中无法使用vue-router问题
如果在axios设置拦截器的js文件或者说在vue-router路由配置文件,配置好的路由文件以外的js文件中使用 import {useRouter} from 'vue-router' 系统不会默 ...
- 2022NCTF
是真的菜 开始复现把 calc 访问之后获得源码 @app.route("/calc",methods=['GET']) def calc(): ip = request.remo ...
- windows terminal用ssh连接已重装的服务器提示REMOTE HOST IDENTIFICATION HAS CHANGED!
连接过程提示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFIC ...
- springcloud(三) - 负载均衡Ribbon
功能介绍 基本保证每个服务不同的ip接收到的请求数量是一样的,确保在微服务下没有没有那个服务器负载过多而另外一个闲置. IRule:根据规则获取制定的服务 规则列表 RoundRobinRule:轮询 ...
- 自动化:web网页理解
一.网页成分 网页由以下三部分组成 HTML: HTML 教程 (w3school.com.cn) 1.标记语言,网页的主体,不会变化 2.只会提示,不会报错 CSS: 1.标记语言,用来修饰HTML ...