数据驱动程序_数据库驱动程序 - CSDN
精华内容
参与话题
  • 我理解的所谓数据驱动程序的方法,简单而言:将数据与程序分析,将代码逻辑的组织转换成数字规律的统计。即将数据作为一个要处理的脚本(当做数据库),然后程序作为解释器,将脚本的内容用代码逻辑解释出来,实现...

    我理解的所谓数据驱动程序的方法,简单而言:将数据与程序分析,将代码逻辑的组织转换成数字规律的统计。即将数据作为一个要处理的脚本(当做数据库),然后程序作为解释器,将脚本的内容用代码逻辑解释出来,实现编程功能。

    这就要求我们将代码逻辑分解出其内在数据关系,这样我们就可以写出与数据无关的函数,这样的函数通用性很大,利于复用,耦合性也比较低,利于修改,且修改后不易出错。

    这样的方法也有坏处,就是可读性变差,解决的办法就是多写点关于逻辑的注释。

    下面举个例子:(来自书籍--单片机编程魔法师之高级裸编程思想,挺好的一本书,可以看看,可以去下载下载链接处,待有缘人! )

    (1)要实现如下波形:

    (2)我们 一般的实现方法:将上面分成16段(依据是波形存在不一样的时候作为分界点),每段单独分析。代码如下(使用51单片机实现)。

    #include <reg51.h>
    
    sbit P10=P1^0;
    sbit P11=P1^1;
    sbit P12=P1^2;
    sbit P13=P1^3;
    
    void delay(unsigned char d, unsigned int t)
    {
    	unsigned int i;
    
    	P1 = P1 & 0xF0 | d;
    	for(i=0; i<t; i++);
    }
    
    main(void)
    {
    	while(1)
    	{
    		delay(0x00, 749);		// 阶段1
    		delay(0x01, 251);		// 阶段2
    
    		delay(0x00, 749);		// 阶段3
    		delay(0x03, 251);		// 阶段4
    
    		delay(0x00, 749);		// 阶段5
    		delay(0x01, 251);		// 阶段6
    
    		delay(0x00, 749);		// 阶段7
    		delay(0x07, 251);		// 阶段8
    
    		delay(0x00, 749);		// 阶段9
    		delay(0x01, 251);		// 阶段10
    
    		delay(0x00, 749);		// 論僇11
    		delay(0x03, 251);		// 論僇12
    
    		delay(0x00, 749);		// 阶段13
    		delay(0x01, 251);		// 阶段14
    
    		delay(0x00, 749);		// 阶段15
    		delay(0x0F, 251);		// 阶段16
    	}
    }
    

    (3)而采用数据驱动程序的方法:将每个阶段分离出数据,然后用一个函数统一处理。本例中使用数组来存储代表各个阶段的逻辑的数据,接着用一段代码就可解决,来代码如下:

    #include <reg51.h>
    
    sbit P10=P1^0;
    sbit P11=P1^1;
    sbit P12=P1^2;
    sbit P13=P1^3;
    
    #define STAGES		16
    unsigned char code P1_1234[] = {0, 1, 0, 3, 0, 1, 0, 7, 0, 1, 0, 3, 0, 1, 0, 15};
    unsigned int code Dts[] = {749, 251, 749, 251, 749, 251, 749, 251, 749, 251, 749, 251, 749, 251, 749, 251};
    
    void delay(unsigned char d, unsigned int t)
    {
    	unsigned int i;
    
    	P1 = P1 & 0xF0 | d;
    	for(i=0; i<t; i++);
    }
    
    main(void)
    {
    	int i;
    
    	while(1)
    	{
    		for(i=0; i<STAGES; i++)
    			delay(P1_1234[i], Dts[i]);
    	}
    }
    

    (4)好处:似乎没有看出了,牺牲了易读性,有得必有失,我们会的得到什么?

    再举几个例子:实现以下波形。对于这个波形,如果我们不采用数据驱动程序的方法,那么相当于重写(重新分阶段,不难但是繁琐),而使用这种高阶的方法后,解释器代码一个字母都不用改变。

    数据驱动程序的代码如下:

    #include <reg51.h>
    
    sbit P10=P1^0;
    sbit P11=P1^1;
    sbit P12=P1^2;
    sbit P13=P1^3;
    
    #define STAGES		8
    unsigned char code P1_1234[] = {0, 1, 3, 7, 15, 7, 3, 1};
    
    void delay(unsigned char d, unsigned int t)
    {
    	unsigned int i;
    
    	P1 = P1 & 0xF0 | d;
    	for(i=0; i<t; i++);
    }
    
    main(void)
    {
    	int i;
    
    	while(1)
    	{
    		for(i=0; i<STAGES; i++)
    			delay(P1_1234[i], 500);
    	}
    }

    (5)总结:

    虽然数据驱动代码这种高阶的方法不是万能,但是对于相似的编程要求,则给我们提供了一种可复用的方法,避免一些简单却繁琐的工作任务。

    还有, 用这种方法记得写注释,不然不仅别人看不懂, 就连几天后的你再次回顾时,都不知道是怎么写出来的。

    展开全文
  • #encoding=utf-8 from selenium import webdriver import time with open(“testdata.txt”) as fp: testdata = fp.readlines() for data in testdata: username_data = data.split("||")[0].strip() ...

    #encoding=utf-8
    from selenium import webdriver
    import time

    with open(“testdata.txt”) as fp:
    testdata = fp.readlines()

    for data in testdata:
    username_data = data.split("||")[0].strip()
    password_data = data.split("||")[1].strip()
    driver = webdriver.Firefox(executable_path = “E:\geckodriver”)

    driver.get("http://mail.126.com")
    pass_word_login= driver.find_element_by_xpath("//a[contains(text(),'密码登录')]")
    pass_word_login.click()
    time.sleep(1)
    driver.switch_to.frame(driver.find_element_by_xpath("//iframe[contains(@id,'x-URS-iframe')]"))
    username = driver.find_element_by_xpath('//input[@name="email"]')
    password = driver.find_element_by_xpath('//input[@name="password"]')
    username.clear()
    username.send_keys(username_data)
    password.send_keys(password_data)
    submit_button = driver.find_element_by_id('dologin')
    submit_button.click()
    driver.switch_to.default_content()
    time.sleep(8)
    assert "退出" in driver.page_source
    log_out = driver.find_element_by_link_text("退出")
    log_out.click()
    time.sleep(5)
    assert "重新登录" in driver.page_source
    driver.quit()
    

    print (“DONE!”)

    源码路径:
    链接:https://pan.baidu.com/s/1utA4yX_DRwWzFOnY2v7NhA
    提取码:9e83
    复制这段内容后打开百度网盘手机App,操作更方便哦

    展开全文
  • 数据驱动测试技术

    千次阅读 2017-03-09 17:27:39
    数据驱动测试的概念 数据驱动测试是从数据文件(excel 文本文件 XML 文件 或者数据库)中读取测试数据,然后通过变量传入脚本中,既可以当测试数据的输入 也可以当输出数据的验证。测试数据在文件中, 测试脚本负责...
    数据驱动测试的概念
    数据驱动测试是从数据文件(excel 文本文件 XML 文件 或者数据库)中读取测试数据,然后通过变量传入脚本中,既可以当测试数据的输入 也可以当输出数据的验证。测试数据在文件中, 测试脚本负责逻辑业务过程、测试状态以及数据文件读取
    数据驱动的测试适用于对相同流程进行大数据量测试且测试结果可被预期的情况
    数据驱动测试技术的特点
    (1)数据与测试脚本分离,从而可以在不修改测试脚本的情况下通过更新测试数据完成对测试用例的增加、更改和删除。
    (2)通过变量的参数化,将测试数据传入测试脚本,不同的数据文件对应不同的测试用例
    (3)提高了测试脚本的灵活性,增加测试覆盖面,以及提高应对测试对象变更的能力。
    数据驱动的自动化侧测试框架
    这种框架从某个数据文件中读取输入、输出的测试数据,然后通过变量传入事先录制好的测试脚本中。
    Individual Siftware Element and data factory
    Test Case
    Agent(Object Model) Test data factory

    Common Software
    UI Driver(Basic Elements) Element ID

    (1)最底层为UI Driver层,主要负责定义基本的通用元素库,eg按钮 下拉框 文本框等每个软件中都会出现的基本元素
    (2)第二层我大力Agent层,这一层是建立在被层软件商,对北侧软件的每一界面(UI)均建立相关的类和对象,方便上层调用,这一层需根据软件的不断封信而更改
    (3)最上册是测试用例层(Test Cases),建立在代理层之上,代理层建好之后,可以提供给测试用例层所需要的界面元素。
    数据驱动测试的流程
    (1)参数化测试脚本的某些常亮,并绑定到数据表中的某个字段
    (2)编辑数据表,在表格中编辑多行测试数据
    (3)设置迭代测试,选择数据行,运行测试脚本每次迭代从中选择一行数据
    数据驱动测试长得驱动脚本
    (1)可变数据,硬编码组件标志
    有些窗口组件中个非常脆弱的识别字符串。这种情况可以用硬编码
    (2)高度技术化的、重复的测试设计(精通编程语言)
    数据驱动测试中的参数化技术
    原因:(1)参数化可以减少脚本的数量,若不进行参数化,就要复制好多脚本并修改
    (2)更好的接近客户的实际情况
    任务:(1)参数替代常量
    (2)设置参数的属性以及数据源
    种类:(1)数据表
    (2)随机数参数化
    (3)环境变量参数化
    (4)外部数据源参数化
    技巧:(1)文本文件存储数据源的缺点是需要自己定义数据之间的分隔符,并且读入数据需要用split函数来进行切割处理。excel文件就可以免除这个麻烦
    (2)数据库表存储数据 ADO链接数据库 ,关键是指好连接串格式
    数据驱动的优点和不足
    优点
    (1)在应用程序开发的同事就可以同步建立测试脚本,而且当应用程序功能变动时,只需要修改业务功能部分的脚本即可
    (2)避免重复脚本没减少建立或者维护的成本
    (3)数据与脚本的分离,有利于测试人员的维护
    (4)可做错误处理,增加了脚本测试的健壮性
    (5)简化手工测试的结果分析
    不足
    (1)需精通脚本语言
    (2)在编写数据文件时,要注意测试脚本所需要的传输格式否则会产生错误



    展开全文
  • c#程序,最近在Excel导入数据时,部分客户会报:外部数据库驱动程序(1)中的意外错误,如下图所示  解决方法:此问题是由于windows系统自动更新造成的。 1.打开控制面板——卸载程序(或者是添加删除程序) ...

    c#程序,最近在Excel导入数据时,部分客户会报:外部数据库驱动程序(1)中的意外错误,如下图所示 


    解决方法:此问题是由于windows系统自动更新造成的。
    1.打开控制面板——卸载程序(或者是添加删除程序)


    2.查看已安装的更新


    3,如果是PC操作系统(一般是服务器)请按以下系统对应补丁进行处理:Windows server 2008 R2卸载微软补丁KB4041678与KB4041681;Windows server2016卸载微软补丁KB4041691;


    4. 最后重启下电脑,重启后再来导入即可

    预防措施:近期装有产品的客户端和服务器电脑暂时不要更新微软补丁

    展开全文
  • 数据驱动思想来设计游戏

    千次阅读 2015-04-01 11:13:52
    游戏由两部分组成,逻辑和数据。这是一种对游戏的有效划分。逻辑部分定义游戏引擎的核心原则和算法,数据部分则提供其内容 和行为的具体细节。在最初的游戏开发的过程中,大家总是喜欢将逻辑...数据驱动编程的核心出发
  • 程序在使用ODBC方式连接数据库时发生错误:ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序。什么原因造成的呢? 首先说明下程序的运行环境。操作系统是win7 64位的。 ...
  • 原文:用友u8各版本在输出的时候报错提示:外部数据库驱动程序(1)中的意外错误 ,报错内容“外部数据库驱动程序(1)中的意外错误”,经初步分析有以下解决方案:1、卸载微软的补丁:(1)如果是PC操作系统(一般...
  • 使用PLSQL Development工具读取excel表格往Oracle数据库中导入数据时,出现错误“在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配”可能是因为windows系统是64位的, 默认的Excel驱动也是64位的,但是PLSQL...
  • ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 经过各种测试ODBC的配置和驱动都没有问题,最终在连接字符串中找到了原因: 在连接字符串的所有参数中等于号前后都可以有...
  • 驱动程序如何通知应用程序读取数据?这是一个很多人都关心的问题。 在此之前,我一直是采用的应用程序主动查询的方式,即,应用程序定时发送IRP来读取驱动程 序的数据。为此,必须考虑一个问题——如果应用程序...
  • 报错:外部数据库驱动程序 (1) 中的意外错误。 由于微软在2017-10-10更新了安全补丁(KB4041678,KB4041681),两个补丁的更新内容中,都包含有这个更新内容(Security updates to Microsoft Windows Se
  • 驱动程序与应用程序之间的通信

    千次阅读 2014-04-11 10:06:33
    驱动程序必须与应用程序进行通信,才能最终达到应用程序控制设备的目的,不然驱动有QIU用。 要通信就涉及到3个方面:  1.应用程序与驱动程序通信 2.驱动程序与应用程序通信 3.数据传输 下面分别讨论 1。应用...
  • 关于“[IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序”的解决方法集合。   问题现象: -在vs.net 2003 下通过odbc 连接mssql6.5 可以正常取得数据。...
  • Excel是平时我们办公时必备的软件,但近段时间不少用户却遇到了加载Excel文件时出现:外部数据库驱动程序(1)中的意外错误 的现象,是怎么回事呢?Microsoft JET是微软为文档型数据库开发的数据库引擎,众多软件...
  • ODBC驱动程序ODBC驱动程序

    千次下载 热门讨论 2020-07-28 23:33:17
    在做软件安装包时,把MySQL ODBC 3.51驱动程序必要的文件一起打进安装包,让用户安装软件的时候,自动在系统ODBC 数据源管理器的连接池添加MySQL ODBC 3.51 Driver驱动程序。 InstallSheild添加MySQL ODBC驱动程序
  • 数据驱动与关键字驱动

    千次阅读 2018-02-20 14:47:38
    数据驱动数据驱动从数据文件读取输入数据,通过变量的参数化将测试数据传入测试脚本,不同的数据文件对应不同的测试用例,数据和脚本分离。数据来控制测试的业务流。 比如你测一个WEB程序,有很多页面,你可以通过...
  • 本人发生这种情况的是在excel 在选定数据连接向导的时候,这是驱动程序和excel的体系结构不匹配; 环境:系统是64位的,安装的数据库驱动也是64位的,mysql是32位 出现问题:“[Microsoft][ODBC 驱动程序管理
  • 除非用户模式驱动程序调用 Win32 API(反过来它会调用系统服务),否则将无法获取对系统数据的访问权。 内核模式驱动程序将作为操作系统的执行部分(即支持一个或多个受保护的子系统的基础操作系统组件)运行。 ...
  • 设备驱动程序是控制设备动作的核心模块,如设备的打开、关闭、读、写等,用来控制设备上数据的传输。它与硬件密切相关,处理用户进程发出的I/O请求。 用户进程使用设备驱动程序时,设备驱动程序的处理过程为:将...
  • 同一份代码,32位Qt编译的能正常读写excel,64位则出现 [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序   系统环境: Win7 64位,Qt64bit   问题原因: 网上百度的解答很多。说...
1 2 3 4 5 ... 20
收藏数 625,233
精华内容 250,093
关键字:

数据驱动程序