精华内容
下载资源
问答
  • 关键字驱动的Selenium测试 ####################微笑测试################### Written by Andreas Popp For more informations visit https://test-with-a-smile.de or mailto andreas.popp@testautomation-popp...
  • 测试人员,python初学者
  • 自动化测试的一个框架,没有使用robotframework,关键字支持大概十几个吧,如果不够可以自己在代码中完善,测试用例写在excel中,运行AutoTest.py就行
  • 0引言  软件测试是保障和提高软件质量的重要手段[1]。软件开发者和使用者必须对软件进行充分的测试,以确保其正常工作。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上[2,3]。...
  • 说到“关键字驱动”和“测试自动化”,就不能不提到MosleyDaniel的《软件测试自动化》一书,这本书03年引入国内,04年市面上开始有卖,书中有两个相信能吸引到很多tester的话题:(1)脚本应该录制还是编写?...
  • selenium关键字驱动.tar

    2020-09-15 12:58:23
    可执行exe程序,内含关键字测试用例模版:实现了多个selenium版本的关键字驱动之后,又从unittest框架升级到pytest,最后又简单使用了tkinter框架生成简单的GUI,反正都是不需要编码的人都能编写测试用例并且执行...
  • 关键字驱动

    2021-03-22 11:34:17
    关键字驱动+数据驱动 POM+数据驱动 关键字驱动: Postman可以通过选择get/post来实现一个method的东一 就是做了一个函数的封装,当选择为Get时,调用Get函数,选择为Post时,调用Post函数。 项目A: 抵代更新快,...

    目前行业内测试框架仅有两种实现形式:

    1. 关键字驱动+数据驱动
    2. POM+数据驱动

    关键字驱动:
    Postman(接口测试)可以通过选择get/post来实现一个method的方法
    就是做了一个函数的封装,当选择为Get时,调用Get函数,选择为Post时,调用Post函数。
    项目A:
    抵代更新快,版本交替频繁,所谓的敏捷开发
    项目B:
    当一个很长的系统

    关键字驱动如何实现:
    1、结构设计
    1)分层:
    在所有的测试框架中,要将代码与数据分层,要将逻辑代码与测试代码分离。

    2、结合业务:在任何一个测试的行为,都是介于业务来实现的。

    3、为什么要走框架:1)企业需要的人,是积累
    2)便于维护和升级
    3)便于执行的效率
    4、代码的实现
    1)代码的分层:
    1. 逻辑层
    2. 测试层
    3. 数据层

    数据驱动:
    在实际的测试中,会准备大量的测试数据,用大量的数据进行测试;在自动化领域中,所有的内容都是基于编程去实现的,将代码与数据进行分离,单纯由数据组成文件,再由文件来驱动关键字,最终实现整个自动化的流程。
    规范化的测试框架的研发结构标准:
    在实际测试框架研发中心,一定要有分层处理,数据驱动也就是所谓的代码与测试数据的分离

    关键字驱动+数据驱动:自动化测试框架的设计模式:
    读取到数据,基于固定格式的数据内容进行拼接,拼接后的内容作为关键字所需要的参数,进行传入,从而执行对应的关键字,再将结果与预期进行对比,从而获得单条测试用例执行是否通过的结果。

    展开全文
  • selenium关键字驱动.exe

    2020-09-15 14:59:00
    设计关键字驱动web自动化测试框架模版,代码0基础小白也能玩web自动化,已打包已打包exe可执行文件:其中亮点@tkinter框架GUI,pyinstaller打包命令,selenium关键字驱动等等技术,运行需要python环境及所需selenium...
  • python+ddt数据驱动+unitTest+关键字驱动实现接口自动化测试
  • Senuji是一个关键字驱动的基于Selenium的测试自动化框架,旨在降低Java编程的复杂性。 Senuji对测试自动化入门者或对没有任何技术测试人员都可以使用Selenium测试自动化功能的功能非常有用。 Senuji具有以下内置功能...
  • 什么是关键字驱动自动化测试

    千次阅读 2020-07-22 17:57:03
    关键字驱动的自动化测试系统与数据驱动的系统相比,主要的不同有两点:第一点是数据文件 的设计方法不同,数据驱动系统中数据文件存储的是测试输入数据,脚本中仍然存在业务逻辑,这样业务的变化会引起脚本的更改,...

    第一章 前言

    为 了提高测试效率和准确性,越来越多的测试工作引入了自动化测试的思想和方法,随着自动化测试工具的发展,自动化测试更加容易实现更高效。实践证明,软件自 动化测试技术帮助软件开发和测试人员在更短的时间内开发出更高质量的产品,通过代替频繁重复的手工测试从而节省了大量的时间开支。同时,自动化测试技术也避免了手工测试出现的人为错误,完成了许多手工测试无法实现的工作。

    自动化测试相较于手动测试有许多明显的优势,执行高效率、测试数据覆盖面大、结果可信。但同时自动化测试也存在着一些限制。简单的录制/回放测试工具本省无法提供高效的测试。依靠捕捉产生脚本的维护需要耗费大量的时间。在项目需求不稳定或页面频繁变动的阶段,自动化测试的效率将非常低下。

    面对自动化测试的这种尴尬,关键字驱动的自动化测试可有效地提高自动化测试脚本的维护效率。关键字驱动的自动化测试搭建了一个自动化测试框架,测试框架脚本与业务、数据分离,节省了大量对脚本的维护工作。本文对关键字驱动的自动化测试做具体介绍。

    第二章 自动化测试工具存在的问题

    基本的录制/回 放自动化测试具有简单易用、快速上手的特点,但在实际应用过程中存在很多问题。最常见的一个问题是对程序界面进行测试时,一旦界面有任何改动,都需要我们 去手工修改已录制的相应测试脚本,或者重新进行一次录制。这需要消耗很大的工作量,尤其对于程序中各模块都要使用的公共程序部分(如登陆页面),他的改动 会引起大量脚本的返工。如在使用Rational Robot录制的点击按钮操作的脚本:测试工具通过按钮的名字、显示文本来识别这个按钮。可以想象,当其中任何一个部分发生变化时都会对脚本造成影响,维护如此的脚本将很可能花费大量成本。

    另一个问题是移植风险大。被测试软件转换平台,或转变自动化测试工具都可能造成测试用例被破坏,很可能要对现有脚本进行大量修改或重新录制。因此转换平台或转换工具可能对自动化测试带来毁灭性影响。

    第三章 自动化测试的发展

    3.1自动化测试框架的发展

    一 个自动化测试框架就是一个由假设、概念以及为自动化测试提供支持的实践的集合。自动化测试框架可以减少测试脚本实现和维护的成本,使测试人员把精力集中在 测试用例的设计上。自动化测试框架的好坏直接影响到自动化测试的成功与否。一个优秀的自动化测试框架应该满足以下特点:

    加入我们,软件测试技术交流群,1125760266,领取最新软件测试资料大厂面试和Python自动化、接口、框架搭建学习资料!

    1. 测试框架与被测应用程序独立。虽然测试的应用程序不一样,但被测应用程序之间却会有相同的地方,测试框架应聚焦在不同测试应用程序中共同的部分,把与具体应用程序有关的部分从框架中移除。

    2. 测 试框架应易于扩展、维护。测试框架应被高度模块化,这样可以提高框架的维护性。各个模块之间相互独立,对模块内部的修改不应该影响其他模块。除此之外,系 统应该有充足、详细的文档,与软件开发一样,这也是必不可少的。设计文档可以帮助开发人员扩展、维护测试框架,而使用文档则可以告诉用户要怎么使用该框 架。

    3. 测试脚本所使用的测试语言应该是与框架独立的。不同的测试框架可能在不同的应用领域有不同的表现,有些适用于Java应用程序的测试, 有些可能适用于Web应用程序的测试,如果测试脚本所采用的语言是私有的、与测试框架绑定的,那么当需要从一个测试框架迁移到另外一个测试框架时,所有的测试脚本都需要重写。

    4. 测 试框架不应该让框架的复杂性影响到测试人员。在大多数情况下,测试人员就是测试人员而不是开发人员,甚至有的时候,他们不是专业的测试人员,可能只是具有 很少软件开发经验的某个应用领域的专家。对于这些使用者来说,测试框架的使用要简单、测试语言要易于理解,这样可以使他们专注于业务相关内容的编写。

    基于界面的软件自动化测试框架和工具的发展大致经历了三个阶段:

    1)简单的录制/回放:由工具录制并记录操作的过程和数据形成脚本,通过回放来重复人工操作的过程。在这种模式下数据和脚本混在一起,几乎一个测试用例对应一个脚本,维护成本很高。而且即使界面的简单变化也需要重新录制,脚本可重复使用的效率低。

    2)数据驱动 (data driven)的自动化测试:从数据文件读取输入数据,通过变量的参数化,将测试数据传入测试脚本,不同的数据文件对应不同的测试用例。在这种模式下数据和脚本分离,脚本的利用率、可维护性大大提高,数据的覆盖率也较高,但受界面变化的影响仍然很大。

    3)关键字驱动(keyword driven)的自动化测试:关键字驱动测试是数据驱动测试的一种改进类型,它将测试逻辑按照关键字进行分解,形成数据文件,关键字对应封装的业务逻辑。 主要关键字包括三类:被操作对象(Item)、操作(Operation)和值(value),依据不同对象还有其他对应参数。关键字驱动的主要思想是:脚本与数据分离、界面元素名与测试内部对象名分离、测试描述与具体实现细节分离。数据驱动的自动化测试框架在受界面影响方面,较数据驱动和录制/回放有明显的优势,可根据界面的变化更新对应的关键字对象,而不用重新录制脚本。

    关键字驱动的自动化测试系统与数据驱动的系统相比,主要的不同有两点:第一点是数据文件 的设计方法不同,数据驱动系统中数据文件存储的是测试输入数据,脚本中仍然存在业务逻辑,这样业务的变化会引起脚本的更改,而关键字驱动系统数据文件的设 计将业务和测试输入数据都集成在数据表格中,虽然设计复杂,但当业务发生变化时,无需更改测试所用的脚本,从而提高了测试的效率。第二点是与数据驱动系统 相比,由于关键字驱动系统中数据文件的设计包含了业务信息,因此,将测试所进行的操作封装为关键字支持脚本。由动作封装的关键字支持脚本不包含任何的数据和业务信息,其重用性得到了极大的增强。
    3.2自动化测试脚本的发展
    相应地,软件测试自动化脚本的类型也依据脚本框架的演进在不断发展,从低到高的发展层次是:

    1. 线性脚本:通过录制直接产生的线性执行的脚本,类似于宏录制。

    2. 结构化的脚本:具有顺序、循环、分支等结构的脚本。

    3. 共享的脚本:可以被多个测试用例使用,被其它脚本调用的脚本。

    4. 数据驱动的脚本:数据和流程控制分离的脚本,通过读入数据文件来驱动流程进行的脚本。

    5. 关键字驱动的脚本:脚本、数据、业务分离,数据和关键字在不同的数据表中,通过关键字来驱动测试业务逻辑。关键字驱动脚本的特点是它描述一个测试事例做什么, 而不是如何做,测试脚本调用测试用例再具体执行。

    第四章 关键字驱动的自动化测试框架

    4.1基本原理

    关键字驱动的自动化测试框架是对数据驱动的逻辑扩展,用关键字的形式将测试逻辑封装在数据文件中,测试工具只要能够解释这些关键字即可对其应用自动化,它的核心思想可以概括为三个分离。

    1)界面元素名与测试内部对象名的分离 在被测应用程序和录制生成的测试脚本之间增加一个抽象层,它可以将界面上的所有元素映射成相对应的一个逻辑对象,测试针对这些逻辑对象进行,界面元素的改变只会影响映射表,而不会影响测试。

    2)测试描述与具体实现细节的分离,把测试描述和测试的具体实现细节分离开来。测试描述只说明软件测试要做什么以及期待什么样的结果,而不管怎样执行测试或怎样证实结果。这样做是因为测试的实现细节通常与特定的平台以及特定的测试执行工具有着密切的联系。这种分离使得测试描述对于应用实现细节是不敏感的,而且有利于测试在工具和平台间的移植。

    3)脚本与数据的分离 最后,可以把测试执行过程中所需的测试数据从脚本中提取出来,在运行时测试脚本再从数据存放处读取预先定制好的数据,这样脚本和数据可以独立维护。

    以上这三个分离各司其职、互相独立,最大程度地减少相互之间的影响。从关键字驱动的思想可以看出,该种测试框架不仅实现了将数据和脚本相分离,而且实现了测试逻辑和数据的分离,大大提高了脚本的复用度和维护性,从而更大限度地实现了测试工具的自动化。

    例如在一个登陆页面输入用户名,用一个测试表来表示:

    窗口 对象 行为 参数
    Loginpage UserID InputText admin

    这个测试表的含义是在LoginPage窗口的UserID文本框中输入“admin”。其中InputText是关键字,当测试程序读取它的时候,就会调用相应的处理函数,处理脚本动作。

    关键字驱动测试模型

    测 试首先由初始脚本开始,把高层测试表传递给高层驱动器,高层驱动器在处理这些表的过程中,遇到中层测试表就调用中层驱动器,中层驱动器处理中层表。当低层 驱动器处理低层表的时候,他试着使应用与测试保持同步。当低层驱动遇到某一成员的关键字指令时,它调用相应的函数模块来处理关键字的动作指令。所有这些元 素都要依靠映射表中的信息,踏实自动化模型和应用间的桥梁。

    应用映射表

    映射表是关键字驱动自动化测试中的关键组件之一。映射表是对应用中的每一个对象定义一套命名规范,并利用映射表把这些名字和自动化工具识别的对象名联系起来,是工具能准确定位和操纵对象,我们的脚本只需进行单点维护。

    映射表的建立有许多种,简单的就是 通过自动化测试工具进行自动捕获,将捕获的对象信息存储于指定的数据表格或数据库之中。如果是自动捕获可以分类记录尽可能多的对象的属性,使得测试脚本更 方便地标识对象。另一种就是采用人工录入,即对于自动化软件测试需要用到的对象信息采用手工识别的方式录入数据文件或数据库之中。这种方式通常是挑选最能 达到测试效果的一组对象属性即可。对于结构复杂的软件可以根据软件的不同层次或是软件界面的不同区域划分对象库。例如对于窗口空间,我们可以将窗口命名为 上下左右主几个部分,将位于不同窗口区域的控件信息保存到相应的窗口名称之下,这样当软件升级或者是GUI界面发生变化时,对于增加的窗口或者是控件,只需要使用测试工具捕获其标识属性,并人工填充到映射表内即可。这样就为测试脚本提供了对象识别的仓库。

    成员函数

    成员函数是实现用户对界面对象操作指令的函数,一个成员对象的类型对应一个成员函数库。例如对以一个文本框对象,可对它进行多种操作:输入文本、验证文本框的值等,实现这些操作行为的函数就被放在文本框的成员函数库中。一般的测试工具都提供了这样的函数。

    成员函数相当于在应用和自动化工具之间提供了一个隔离层,如果没有这个隔离层,自动化工具本身的改变会影响到已有的脚本。有了隔离层,当测试工具发生变化时,可以在成员函数库中增加一段修补代码来适应变化。

    测试表和核心驱动程序

    测试表分低层、中层、高层。低层测试表指定了测试的每一步指令语句,这些指令都是直接作用在界面对象上的,是无法再锌粉的指令。中层测试表把低层表组装起来执行任务,形成测试用例。高层测试表把中层表组装起来,利用循环完成不同的中层测试,形成测试集。

    例如打开网页、登陆、关闭页面这三个动作可以用三个低层表来表示(如表),每个表定义了实现相应动作的具体步骤,所以低层表示又叫做步骤表。低层表中使用了映射表中定义的对象名,和成员函数库定义的底层关键字库。

    窗口 对象 行为 参数
    LoginPage UserIDField InputText “admin”
    LoginPage UserIDField InputText “123”
    LoginPage UserIDField Click

    这个“登陆”动作的低层表可能出现在“验证正确登陆”,“验证错误登陆”和“验证空白登陆”等中层用例表中,这些中层表合起来构成了“验证权限”高层表。

    对应以上这三个测试表,核心数据驱动引擎相应地分成高层、中层、低层驱动器。高层驱动循环读取高层表的每条记录,遇到中间表的关键字,就把这个表传递给中层驱动器,依次类推直至到达低层表,低层驱动器来完成最后的执行。

    加入我们,软件测试技术交流群,1125760266,领取最新软件测试资料大厂面试和Python自动化、接口、框架搭建学习资料!

    展开全文
  • 关键字驱动测试框架的研究,为了挣点积分才上传的关键字驱动测试框架的研究,为了挣点积分才上传的关键字驱动测试框架的研究,为了挣点积分才上传的
  • SeleniumAutomation:完整的关键字驱动的自动化框架
  • 如何理解自动化测试数据驱动与关键字驱动的区别?_框架 初学者应该如何理解自动化测试数据驱动与关键字驱动的区别?本文将由千锋给大家分享一下。  一、关键字驱动KDT(Keyword-driven testing) 1、自动化测试框架...

    如何理解自动化测试数据驱动与关键字驱动的区别?_框架

    初学者应该如何理解自动化测试数据驱动与关键字驱动的区别?本文将由千锋给大家分享一下。

      一、关键字驱动KDT(Keyword-driven testing)

    1、自动化测试框架发展的第三个阶段是关键字驱动测试框架阶段,它是当前比较流行的一种框架之一,并且现在的自动化测试工具已经将关键字驱动框架融入到工具中。在录制过程中自动化测试工具会将对象及操作属性保存到对象库中。

    2、关键字驱动测试是数据驱动测试的一种改进类型, 用关键字的形式将测试逻辑封装在数据文件中,测试工具只要能够解释这些关键字即可对其应用自动化。

    以某工具自带的飞机订票系统为例,录制完成后的每个测试步骤主要有三个元素组成:

    Item:指对象名,可以是一个窗口、按钮等;

    Operation:指要执行的动作,如Select、Click等;

    Value:操作动作所输入的数据值;

    录制其登录过程,生成的代码如下:

    Dialog("Login").WinEdit("Agent Name:").Set "test"

    Dialog("Login").WinEdit("Password:").SetSecure

    Dialog("Login").WinButton("OK").Click

    这是以关键驱动的方式生成的代码,关键字驱动测试最核心的是关键字表格。以飞机订票系统的登录为例,其关键字表格见表:

    关键字驱动的思路是将关键字表中的对象及数据提取出来并构造成每个测试步骤,如步骤:Dialog("Login").WinEdit("Agent Name:").Set "test"。需要将关键字表中的对象、属性及输入的数据读取出来,将它们构造同以上格式的代码步骤,通过这种方式来实现关键字驱动的功能。

    下面是调试好的一个的关键字驱动的框架,代码如下:

    —————————————————————————————————

    ''

    ' 工程名:关键字驱动

    '

    ' 方法:

    ' GetExcelCells —————读取单元格中的值

    ' GetExcleSheetRowsCount—————获取关键字驱动表中的行数

    ' oParentObject—————构造父对象

    ' oChildObject—————构造子对象

    ' oEventObject —————对对象属性赋值

    '

    '———————————————————————————————————

    ''

    ' 函数名:GetExcelCells

    '

    ' 参数:

    ' ExcelPath —————关键字驱动表的路径

    ' SheetName—————关键字驱动表的sheet名

    ' SheetRow—————单元格中的行

    ' SheetColumn—————单元格中的列

    3、 在关键字驱动框架里,你可以创建一些关键字以及相关联的一些方法和函数。然后你创建一个函数库,它里面包含一个读取关键字的逻辑,然后调用相关的动作。

    关键字驱动的自动化测试(也称为表驱动测试自动化),是数据驱动自动化测试的变种,可支持由不同序列或多个不同路径组成的测试。它是一种独立于应用程序的自动化框架,在处理自动化测试的同时也要适合手工测试。关键字驱动的自动化测试框架建立在数据驱动手段之上,表中包含指令(关键词),而不只是数据。这些测试被开发成使用关键字的数据表,它们独立于执行测试的自动化工具。关键字驱动的自动化测试是对数据驱动的自动化测试的有效改进和补充。

    这种自动化测试的模型主要由核心数据驱动引擎、组件函数、支持库和应用映射表组成。自动化测试首先由初始脚本开始执行,这个脚本把高层测试表传递给高层驱动器,高层驱动器在处理这些表的过程中,遇到中层测试表后就调用中层驱动器,中层驱动器处理中层表时也作类似的处理。当低层驱动器处理低层表时,它尝试着使应用与测试保持同步。当低层驱动器遇到对某一个组件的低层关键字组件时,它判断这个组件的类型并调用相应的组件函数模块来处理这个指令操作。所有这些元素都要依靠映射表中的信息,它是自动化测试模型和被测应用程序的桥梁。支持库主要完成一些文件处理,日志记录和邮件发送等等的功能。

      二、数据驱动的自动化测试框架

      什么是数据驱动的自动化测试框架

    数据驱动的自动化测试框架是这样的一个框架,从某个数据文件(例如ODBC源文件、Excel文件、Csv文件、ADO对象文件等)中读取输入、输出的测试数据,然后通过变量传入事先录制好的或手工编写的测试脚本中。其中,这些变量被用作传递(输入/输出)用来验证应用程序的测试数据。在这个过程中,数据文件的读取、测试状态和所有测试信息都被编写进测试脚本里;测试数据只包含在数据文件中,而不是脚本里,测试脚本只是一个“驱动”,或者说是一个传送数据的机制。

      数据驱动脚本

    数据驱动脚本就是那些和应用程序相关联的脚本。这些脚本通过录制或手工编写写进自动化工具私有的语言,然后对其中的变量赋予合适的数值,作为测试数据的输入。这些变量作为一些关键应用程序输入的媒介,使脚本能通过外部的数据来驱动应用程序。

    可变数据,硬编码组件标志

    这些数据驱动的脚本经常包含硬编码的数据,有时是一些窗口组件中非常脆弱的识别字符串。出现这种情况时,脚本很容易由于程序的更改而失去作用。

    高度技术化的、重复的测试设计

    数据驱动脚本的另一个共同特点就是,所有在测试设计上所作的努力最终都体现在自动化工具的脚本语言中,或者复制到手工和自动化测试脚本中。这意味着每个和自动化测试开发或执行有关的人必须对测试环境和自动化工具的编程语言非常精通。

      优点与缺点

    1) 优点: ①在应用程序开发的同时就可以同步建立测试脚本,而且当应用功能变动时,只需要修改业务功能部分的脚本;②利用模型化的设计,避免重复的脚本,减少建立或维护脚本的成本;③测试输入数据,验证数据和预期的测试结果与脚本分开,存放在另外的数据文件里,利于测试人员修改和维护;④透过判断功能回传值是“True”或“False”,可作错误处理,增加了测试脚本的健壮性;⑤自动化测试开发人员创建数据驱动的测试过程,测试员创建测试数据;⑥在测试的过程中收集测试结果,并在输入数据的语境中表示测试结果,这样可以简化手工结果分析。

    2) 缺点: ①对自动化测试工具里的脚本语言必须非常精通;②每个脚本都会对应多个数据文件,这些数据文件需要根据脚本的功能类别存放在各自的目录中,增加了使用的复杂性;③测试人员除了需要根据具体测试数据维护相应的测试计划,还要将这些数据写入各个需求不同的数据文件中;④在编辑数据文件时,必须注意测试脚本所要求的传输格式,否则会在处理脚本时产生错误。如由专门的技术人员对其进行维护,依赖于数据驱动脚本的自动化测试框架实现起来更简单、快捷。但是,维护工作困难,而且还需要保持这种数据驱动的模式,这样,即便长时间的维持也会导致失败

    展开全文
  • python selenium 关键字驱动开源 说明 最新的selenium3 python3的开源优化 使用 点击获取源码 配置yamls下的config的url url: https://testerhome.com/ 命令运行 python runner.py 或者修改start....

    python selenium 关键字驱动开源

     

    说明

    最新的selenium3 python3的开源优化

    使用

    配置yamls下的config的url

    url: https://testerhome.com/
    

    命令运行

    python runner.py
    
    • 或者修改start.test.bat中的路径后,直接点击运行

    结果展示

    日志目录

    • 文件夹:chrome_XXXXX,包含截图
    2018-04-29 23:28:09,357  - INFO - ----  test001_登录失败_div.container>ul>li:nth-child(2)_css_click_         ----
    2018-04-29 23:28:09,970  - INFO - ----  test001_登录失败_input-lg_class_name_send_keys_lose1        ----
    2018-04-29 23:28:10,066  - INFO - ----  test001_登录失败_user_password_id_send_keys_1231231232        ----
    2018-04-29 23:28:10,187  - INFO - ----  test001_登录失败_div.form-actions_css_click_         ----
    2018-04-29 23:28:10,784  - INFO - ----  test001_登录失败_div.alert-warning_css_ _         ----
    2018-04-29 23:28:10,785  - INFO - [CheckPoint_1]: testALoginFail_ : OK
    2018-04-29 23:28:36,116  - INFO - ----  test001_登录_div.container>ul>li:nth-child(2)_css_click_         ----
    2018-04-29 23:29:41,881  - INFO - ----  test001_登录_input-lg_class_name_send_keys_lose1        ----
    2018-04-29 23:30:16,331  - INFO - ----  test001_登录_user_password_id_send_keys_1231231232        ----
    2018-04-29 23:30:16,433  - INFO - ----  test001_登录_div.form-actions_css_click_         ----
    2018-04-29 23:31:02,425  - INFO - [CheckPoint_2]: testBLogin_==请检查dropdown-avatar==: NG
    
    • 实时日志
    
    testALoginFail (TestCase.HomeTest.HomeTest) ... ==操作步骤:div.container>ul>li:nth-child(2)_css_click_ ==
    ==操作步骤:input-lg_class_name_send_keys_lose1==
    ==操作步骤:user_password_id_send_keys_1231231232==
    ==操作步骤:div.form-actions_css_click_ ==
    ==操作步骤:div.alert-warning_css_ _ ==
    ==用例_登录失败检查点成功==
    ok
    testBLogin (TestCase.HomeTest.HomeTest) ... ==操作步骤:div.container>ul>li:nth-child(2)_css_click_ ==
    ==操作步骤:input-lg_class_name_send_keys_lose==
    ==操作步骤:user_password_id_send_keys_XXXXX==
    ==操作步骤:div.form-actions_css_click_ ==
    ==操作步骤:dropdown-avatar_class_name_click_ ==
    ==操作步骤://ul[@class='dropdown-menu']/li/a[contains(text(),'lose')]_xpath_ _ ==
    ==用例_登录检查点成功==
    [{'caseName': 'testALoginFail', 'step': '点击登录\n输入用户名\n输入密码\n点击登录\n', 'info': '打开testerhome', 'title': '登录失败', 'checkStep': '错误的密码登录不成功\n', 'id': 'test001', 'msg': '', 'name': 'chrome', 'result': '通过'}]
    ok
    testHotTopic (TestCase.MyTest.MyTest) ... ==操作步骤:div.container>ul>li:nth-child(2)_css_click_ ==
    ==操作步骤:input-lg_class_name_send_keys_lose==
    ==操作步骤:user_password_id_send_keys_XXXX==
    ==操作步骤:div.form-actions_css_click_ ==
    ==操作步骤:dropdown-avatar_class_name_click_ ==
    ==操作步骤:dropdown-avatar_class_name_click_ ==
    ==操作步骤://ul[@class='dropdown-menu']/li/a_xpath_click_ ==
    ==操作步骤://ul[@class="list-group"]/li[1]/div/a[2]_xpath_get_text_ ==
    ==操作步骤:ul.list-group > li:nth-child(1) > div.title > a:nth-child(2)_css_click_ ==
    ==操作步骤:/html/head/title_xpath_get_text_ ==
    ==用例_热门话题检查点成功==
    

    测试报告

    代码简要分析

    yml测试用例

    testinfo:
        - id: test001
          title: 登录
          info: 打开testerhome
    testcase:
        - element_info: div.container>ul>li:nth-child(2)
          find_type: css
          operate_type: click
          info: 点击登录
        - element_info: input-lg
          find_type: class_name
          operate_type: send_keys
          msg: lose
          info: 输入用户名
        - element_info: user_password
          find_type: id
          operate_type: send_keys
          msg: XXXXX
          info: 输入密码
        - element_info: div.form-actions
          find_type: css
          operate_type: click
          info: 点击登录
        - element_info: dropdown-avatar
          find_type: class_name
          operate_type: click
          info: 点击图像
    
    check:
        - element_info: //ul[@class='dropdown-menu']/li/a[contains(text(),'lose')]
          find_type: xpath
          check: default_check(默认可以不传,就是简单的查找页面元素)
          info: 查找用户名成功
    
    • 关于check下面可以填检查点的类型:
      • CONTRARY = "contrary" # 相反检查点,表示如果检查元素存在就说明失败,如删除后,此元素依然存在
      • CONTRARY_GETVAL = "contrary_getval" # 检查点关键字contrary_getval: 相反值检查点,如果对比成功,说明失败
      • DEFAULT_CHECK = "default_check" # 默认检查点,就是查找页面元素
      • COMPARE = "compare" # 历史数据和实际数据对比

    某个用例的page层

    class LoginPage:
        def __init__(self, kwargs):
            _init = {"driver": kwargs["driver"], "test_msg": getYam(kwargs["path"]),
                     "logTest": kwargs["logTest"], "caseName": kwargs["caseName"]}
            self.page = Pages.PagesObjects(_init)
    
        def operate(self):  # 操作步骤
            self.page.operate()
    
        def checkPoint(self):  # 检查点
            self.page.checkPoint()
    
    • pages再次封装了一层,主要使用了 setupclass+ self.driver.get重定位的方式
      • 避免用例依赖,并不会每个用例重新启动一个session,重连机制也是这样实现的(后续填坑)
            if kwargs.get("launch", "0") == "0":  # 若为空, 刷新页面
                self.driver.get(self.driver.current_url)
    

    testcase层调用page层

    cclass HomeTest(ParametrizedTestCase):
        def testALoginFail(self):
            app = {"logTest": self.logTest, "driver": self.driver, "path": PATH("../Yamls/home/LoginFail.yaml"),
                   "caseName": sys._getframe().f_code.co_name}
    
            page = LoginFailPage(app)
            page.operate()
            page.checkPoint()
    
        def testBLogin(self):
            app = {"logTest": self.logTest, "driver": self.driver, "path": PATH("../Yamls/home/Login.yaml"),
                   "caseName": sys._getframe().f_code.co_name}
    
            page = LoginPage(app)
            page.operate()
            page.checkPoint()
    

    封装自己的关键字

    • 在BaseOperate中定义自己的关键字
    
        def operate_by(self, operate, testInfo, logTest):
           ...........
                elements = {
                    be.CLICK: lambda: self.click(operate),
                    be.GET_VALUE: lambda: self.get_value(operate),
                    be.GET_TEXT: lambda: self.get_text(operate),
                    be.SEND_KEYS: lambda: self.send_keys(operate),
                    be.MOVE_TO_ELEMENT: lambda: self.move_to_element(operate)
                }
    
    • 在用例中yaml传入自己的关键字即可,看看下面的operate_type中的鼠标悬停
    testcase:
        - element_info: cate_item_108698
          find_type: id
          operate_type: move_to_element
          info: 鼠标悬停到.net分类上
    

    后续

    • 引入重连机制
    • docker grid
    • 如果大家对于学习Python有任何问题,学习方法,学习路线,如何学习有效率的问题,可以随时来咨询我,或者缺少系统学习资料的,我做这行年头比较久,自认为还是比较有经验的,可以帮助大家提出建设性建议,这是我的Python交流qun:785128166,有任何问题可以随时来咨询我。
       
    展开全文
  • 文章目录自动化测试的实施策略单元测试框架数据驱动设计模式核心原理适用场景代码示例关键字驱动设计模式混合模式驱动设计模式其他设计模式浅谈 自动化测试的实施策略 单元测试框架 数据驱动设计模式 核心原理 适用...
  • 这样的话就可以达到测试脚本复用,但是我现在使用的是Pytest作为测试框架,想请问一下各位前辈,Pytest能支持这样的关键字驱动吗?如果不能的话是否需要重新编写一个框架? 望不吝赐教,谢谢。
  • 数据驱动 数据和程序的分离,程序不变,数据变 from selenium import webdriver import time driver = webdriver.Firefox(executable_path = "d:\geckodriver") driver.get("http://www.bing.com") search_box = ...
  • 关键字(函数)来做自动化测试,将一些常规动作提炼成关键字(函数),以百度搜索为例子,如下 import time from selenium.webdriver.common.by import By from selenium import webdriver driver = webdriver....
  • 【附源码】在关键字驱动测试框架中,除了PO模式以及一些常规Action的封装外,在团队中如何让不会写代码的人也可以进行自动化测试?通过代码实现,使得非技术型测试工程师通过修改数据文件即可执行不同的自动化测试,...
  • 今天,我们来聊聊自动化测试里的高逼格词汇(装x词汇),关键字驱动和数据驱动,相信大伙经常听到吧,首先来说说关键字驱动吧, 关键字驱动,作为一种自动化测试框架的设计形式,在很久以前就被提到过。它的基本原理...
  • 关键字驱动自动化测试

    千次阅读 2018-08-17 11:37:33
    关键字驱动的自动化测试系统与数据驱动的系统相比,主要的不同有两点:第一点是数据文件 的设计方法不同,数据驱动系统中数据文件存储的是测试输入数据,脚本中仍然存在业务逻辑,这样业务的变化会引起脚本的更改,...
  • 关键字驱动; 2.同理,关键字决定了结果,关键字,即测试对象名称(测试类,测试方法),测试对象的改变,测试结果也随之改变; 3.关键字驱动,为QTP主推,具体实现:a.在程序中将测试所涉及的对象添加到对象库中,b...
  • Selenium之-数据驱动框架  那么问题来了,什么是数据驱动呢?就是,数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变,也就是参数的应用化。  这里对于数据驱动测试,总结起来就是,数据驱动绝非读取...
  • 什么是Selenium框架? 这个 Selenium框架 是一种代码结构...关键字驱动测试框架 混合测试框架 Selenium中的数据驱动框架 Selenium中的数据驱动框架 是一种将数据集与测试用例分开的方法。一旦数据集从测试用例中分离.
  • 关键字驱动框架 关键字驱动框架是一种技术,其中要执行的所有操作和指令均与实际测试用例分开编写。它与Data Driven框架的相似之处在于,要执行的操作再次存储在Excel表格之类的外部文件中。 我正在谈论的操作不过...
  • 什么是数据驱动 数据驱动,意思是写一个测试用例,可以覆盖这个测试用例的各种不同条件的测试场景步骤。核心实现是,需要输入的参数是外部数据源提供。本框架输入的用户名和密码其实就写死的,但是很多场景我们都...
  • 关键字驱动测试

    千次阅读 2018-07-19 22:41:32
    关键字驱动测试概述 也叫表格驱动测试 将业务逻辑和具体的脚本相互脱离,提高代码的可重用性,降低了脚本的维护量 特点:引入了脚本动态设计的思想;引入了对象化的思想性;实现了脚本、业务、数据的分离,把耦合...
  • 简单版-关键字驱动

    2020-01-03 22:16:37
    关键字驱动可以理解为高级的数据驱动测试框架,使用被操作的元素对象、操作的方法和操作的数据值作为测试过程输入的自动化测试框架。 被操作的元素对象、操作的方法和操作的数据值可以保存在数据数组、数据文件、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,404
精华内容 47,361
关键字:

关键字驱动