zoukankan      html  css  js  c++  java
  • 透析QTP自动化测试框架SAFFRON

    1、为什么要使用框架?

    原文地址:http://www.uml.org.cn/Test/200810108.asp 作者:陈能技

    框架是一组自动化测试的规范、测试脚本的基础代码,以及测试思想、惯例的集合。可用于减少冗余代码、提高代码生产率、提高代码重用性和可维护性。例如QTestWare就是QTP自动化测试框架中的一类。

    2、SAFFRON简介

    SAFFRON是针对Web开发的一个简单的QTP测试框架原型,是Adam Gensler于06年写的,需要QTP 9.1版本以上。完整的SAFFRON脚本代码可到以下地址获取:http://www.itestware.com/ctest/index.php?option=com_content&view=article&id=62:webqtp-saffron&catid=35:testing_is_believing

    3、如何使用SAFFRON?

    SAFFRON框架以外部VBS文件的形式出现,因此使用方法比较简单,直接在测试脚本中以资源形式导入即可使用,如图所示:

    透析QTP自动化测试框架SAFFRON

    导入后,可在“Available Keywords”视图中看到SAFFRON的所有函数,如图所示:

    透析QTP自动化测试框架SAFFRON

    选中某个函数,拖拽到专家视图的编辑器中,如图所示:

    透析QTP自动化测试框架SAFFRON

    后接一个URL地址,例如“http://www.itestware.com”,即可使用SAFFRON框架中的BrowseTo函数导航到指定的URL地址,如下脚本所示:
    'BrowseTo(url)
    BrowseTo "http://www.itestware.com"

    4、SAFFRON框架代码剖析

    为了深入了解SAFFRON,以及框架的使用方法,下面我们将分别介绍SAFFRON中的主要函数,对SAFFRON代码进行深入剖析。

    4.1 导航到指定URL

    SAFFRON使用名为BrowseTo函数来负责导航到指定的URL,如果浏览器尚未启动,则先调用函数Launch来打开浏览器。BrowseTo函数的定义如下所示:
         Public Function BrowseTo (url)
          thirdlevel = ""
          Report micPass, "Navigate to URL", "Navigating to URL: " & Quote(url)
          If initialized Then
           Execute GenerateDescription("Browser") & "Navigate " & Quote(url)
          Else
           Launch "website", url
          End If
          Reporter.Filter = rfDisableAll
         End Function

    在脚本中,会判断是否初始化了浏览器,如果有则执行导航动作,导航到指定的URL。导航动作是执行这行脚本来完成的:
         Execute GenerateDescription("Browser") & "Navigate " & Quote(url)

    Execute是一个用于执行指定VBScript脚本语句的函数,GenerateDescription函数的定义如下所示:
         ' Generates a generic description based up on the "level" viarable
         ' levelstr - will be one of the values that is in the level array
         ' returns - string representative of the object hierarchy
         Public Function GenerateDescription (levelstr)
          l = IndexOf(level, levelstr)
          If l >=0 Then
           fdesc = level(0) & "(" & Quote(desc(0)) & ")."
           If l >= 1 Then
            fdesc = fdesc + level(1) & "(" & Quote(desc(1)) & ")."
            If 2 >= l Then
             If thirdlevel <> "" Then
              fdesc = fdesc + level(2) & "(" & Quote(desc(2)) & "," & Quote("name:=" & thirdlevel) & ")."
             End If
            End If
           End If
          End If
            GenerateDescription = fdesc
         End Function

    4.2 返回测试对象的描述

    GenerateDescription函数用于返回对象的描述性语句,例如,指定Browser,则返回如下语句:
         "Browser("micclass:=Browser")."

    该语句代表了当前浏览器对象,并且后面加了个点号,这是为了方便后接"Navigate "这个浏览器对象的导航操作,以及指定的URL字符串,例如"http://blog.csdn.net/testing_is_believing"。在Execute时,其实执行的VBScript语句如下所示:
         Browser("micclass:=Browser").Navigate "http://blog.csdn.net/testing_is_believing"

    经过SAFFRON的框架封装后,则只需要使用如下语句即可达到同样的效果:
    BrowseTo "http://blog.csdn.net/testing_is_believing"

    4.3 启动浏览器

    SAFFRON使用名为BrowseTo函数来负责导航到指定的URL,但是如果浏览器未启动,则会先调用函数Launch来打开浏览器。Launch函数的定义如下所示:
         prepares the framework for usage, and configures all internal framework
         ' variables and structures
         ' apptype - used to launch different types of applications based
         '           upon different technologies -- currently there is only web
         ' val     - string that represents what to launch
         ' returns - always returns true
         Public Function Launch (apptype, val)
          If "website" = apptype Then
           thirdlevel = ""
           Report micPass, "Initialize", "Initializing Framework"
           level = split(webLevels, leveldelimiter, -1, 1)
           desc = split(webLevelsDesc, leveldescdelimiter, -1, 1)
           object = split(objects, objectdelimiter, -1, 1)
           objectDescription = split(objectsDescription, objectsDescriptiondelimiter, -1, 1)
           CloseBrowsers
           Set IE = CreateObject("InternetExplorer.Application")
           IE.visible = true
           IE.Navigate val
           While IE.Busy
            wait 1
           Wend
          End If
          initialized = true
          Launch = true
         End Function

    可看到脚本中创建了IE的COM对象,然后设置IE的Visible属性设置为Tue,让浏览器可见,然后调用IE对象的Navigate方法导航到指定的URL。除了创建IE的COM对象外,在Launch函数中还进行框架其它方面的初始化。

  • 相关阅读:
    Python—格式化输出
    拨开Python迷雾
    彻底搞懂Python切片操作
    CodeMirror教程,CodeMirrorAPI中文信息
    PHP header() session_start() 函数前为什么不能有输出?
    PHP time() date() strtotime()日期函数总结
    LAMP专业术语的规范书写格式
    经验之谈
    PHP接口对方(C#)接收不到数据?ContentLength=1
    jQuery判断checkbox是否选中?操作checkbox(不)选中?
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/3050536.html
Copyright © 2011-2022 走看看