发布新日志

  • LR从数据库中返回值

    2010-02-05 12:13:08

    /*需要的表结构如下
    CREATE TABLE `test_data` (
      `order_id` BIGINT UNSIGNED NOT NULL COMMENT 'Order numbers. Must be unique.',
      `status` BOOL NOT NULL DEFAULT '0' COMMENT 'Whether data has been used or not. A value of 0 means FALSE.',
      `date_used` DATETIME NULL COMMENT 'Date/time that the data was used.',
      UNIQUE (
        `order_id`
      )
    ) ENGINE = innodb COMMENT = 'LoadRunner test data';
    */
    Action()
    {
      int rc;
      int db_connection; // 数据库连接
      int query_result; // 查询结果集 MYSQL_RES
      char** result_row; // 查询的数据行
     
      char *server = "192.168.2.200";
      char *user = "root";
      char *password = "*******";
      char *database = "*****";
      int port = 3306;
      int unix_socket = NULL;
      int flags = 0;
     
      // 找到libmysql.dll的所在位置.
      rc = lr_load_dll("d:\\libmysql.dll");
      if (rc != 0) {
        lr_error_message("Could not load libmysql.dll");
        lr_abort();
      }
     
      // 创建MySQL对象
      db_connection = mysql_init(NULL);
      if (db_connection == NULL) {
        lr_error_message("Insufficient memory");
        lr_abort();
      }
     
      // 连接到MySQL数据库
      rc = mysql_real_connect(db_connection, server, user, password, database, port, unix_socket, flags);
      if (rc == NULL) {
        lr_error_message("%s", mysql_error(db_connection));
        mysql_close(db_connection);
        lr_abort();
      }

     rc = mysql_query(db_connection, "SELECT order_id FROM test_data WHERE status=1 LIMIT 1");
      if (rc != 0) {
        lr_error_message("%s", mysql_error(db_connection));
        mysql_close(db_connection);
        lr_abort();
      }
      query_result = mysql_use_result(db_connection);
      if (query_result == NULL) {
        lr_error_message("%s", mysql_error(db_connection));
        mysql_free_result(query_result);
        mysql_close(db_connection);
        lr_abort();
      }
      result_row = (char **)mysql_fetch_row(query_result);
      if (result_row == NULL) {
        lr_error_message("Did not expect the result set to be empty");
        mysql_free_result(query_result);
        mysql_close(db_connection);
        lr_abort();
      }
      lr_save_string(result_row[0], "paramOrderID");
      lr_output_message("Order ID is: %s", lr_eval_string("{paramOrderID}"));
      mysql_free_result(query_result);

      mysql_close(db_connection);

    }

     

  • lr_eval_string (LR函数)

    2010-02-05 11:15:31

    lr_eval_string()
    函数的主要作用:返回脚本中的一个参数当前的值,
     
    1.参数的赋值和取值
    lr_save_string("hello world","param");
    lr_eval_string("{param}");
    2.变量到参数
    int x;
    x=10;
    lr_save_string(x,"param");
    lr_eval_string("{param}");
    3.变量读参数
    char x[100];
    x="{param}";
    lr_save_string("hello world","param");
    lr_eval_string(x);
     
     
  • lr_save_string(LR函数)

    2010-02-05 11:03:38

    lr_save_string是将常量或变量保存到参数中
    (1)//将常量保存为参数
    lr_save_string("777","page");
    (2)//将变量保存为参数,tmp为变量
    lr_save_string(tmp,"page");
  • loadrunner 录制flex使用

    2010-02-04 13:45:25

    (1)在协议中选择FLEX 和HTTP协议
    (2)在tools----->Recording Options 下FLEX---- CODE GENERATION
    下设置选择两个选项,后一个选项后输入加载的地址如:
    F:\lrtest\flex-messaging-core.jar;F:\lrtest\flex-messaging-common.jar;F:\lrtest\flex-messaging-opt.jar;F:\lrtest\flex-messaging-proxy.jar;F:\lrtest\flex-messaging-remoting.jar
  • Flex 参数关联

    2010-02-03 18:27:05

    (1)切换到TREE
    (2)在左边的树,要参数的节点上右键选择“Properties”
    (3)在弹出的页面的Response parameter:输入NAME,点击OK
    (4)在右边选择 Response
    (5)选择要参数的字符串上面的节点上右键选择“Save value in parameter”
    弹出页面,将 XML Source:输入之前的NAME
    点击OK
    (6)自动生成lr_xml_get_values
    此时参数就可以运行使用了
     
    如想看到要返回的值就 
     lr_output_message("String value : %s", lr_eval_string("{ParamValue_string}"));
     
  • QTP对象库添加

    2009-03-18 11:51:10

    对象库的添加
    (1)手工添加
    到对象库中  Tools--->associate repositories,选择对象库路径添加
    (2)程序添加
    path1= "对象库路径"
    RepositoriesCollection.Add(path1)
  • QTP与mysql连接

    2009-01-08 17:28:40

    之前直接通过写连接的方式直接连接MYSQL数据库的方式得到结果中文中英文和数字可以读到,但在读取中文的时候总是只能读到一个中文字后面的将不显示出来了,后来看了网上的一些帮助原来系统ODBC驱动里默认不支持开源的MYSQL驱动

    (1)需要下载驱动程序 MyODBC-3.51.11-2-win.exe

        安装后到“控制面板--管理工具--数据源ODBC--系统DSN”把它添加进来

        A.点击添加,出现选择界面点击MYSQL ODBC 3.51 DRIVER,后点击“完成”

        B.进入到“connector/ODBC”页面,login 页面设置,advanced页子中Flags3选择“Read Options From my.cnf”,点击OK,添加成功

    (2)到QTP中将连接

    conn.open"DATABASE=数据库名称;DSN=在“connector/ODBC”页面,login 页面中Data source name设置;PWD=数据库密码;PORT=数据库端口;SERVER=数据库地址;UID=数据库登入名;STMT=SET NAMES GBK"

    其中STMT=SET NAMES GBK很重要,转换字类型,如果不加这个出来的中文字就是??

  • QTP错误机制处理

    2008-11-04 15:45:57

    (1)全局错误响应在Test Setting 的Run 选项中进行设置:File-->Settings-->Test Settings Dialog--> Run Tab-->When error occurs during run session

    · pop up message box: QuickTest 在出现错误时显示一个错误消息对话框。要继续或结束运行会话,您
    必须单击该消息框中的某个按钮
    · process to next action iteration: QuickTest 在出现错误时继续下一个Action 循环。
    · stop run: QuickTest 在出现错误时停止测试
    · process to next step:QuickTest 在出现错误时跳过错误语句,继续下一步骤

    (2)VBscrīpt 的On Error 错误处理方式

    与错误处理相关的三者为:On Error Resume Next 语句, On Error GoTo 0 语句,以及Err 对象

    (a) On Error Resume Next
    一旦这个语句已被处理,脚本引擎将继续运行后面的程序,而不理会已经发现的任何错误。

    (b)On Error GoTo 0
    使用On Error Goto 0 语句恢复缺省的错误处理行为。在运行这个语句后,发生的运行期错误将导致缺省错
    误处理。在QTP 中,缺省错误处理就是全局错误响应。

    (c)Err 对象
    Err 对象重要的属性有三个:Number, Source, Descrīption。分别是错误号,错误来源,错误描述
    Err 对象会在运行时错误发生的时候赋予新的值,旧的值会被舍弃。
    Err 对象不会受到函数调用的影响,它完全是全局的。
    Err 对象可以用Clear 方法清空
    任何时候调用On Error Resume Next 或者On Error GoTo 0 的时候,都会清空Err 对象

    (3)恢复场景Recovery Scenarios
    ResourcesRecovery Scenarios Manager…可以创建恢复场景。

     

     

  • QTP中的datatable

    2008-01-18 16:25:32

    DataTable.SetCurrentRow(RowNumber):可以指定某行为当前行。

    DataTable.SetNextRow、DataTable.SetPrevRow:指定当前行的上一行、下一行为当前行。

    DataTable(1, "Action2") :不管当前的是那个表,取的值就是"Action2"里的第一列

    For i=1 to datatable.localsheet.getrowcount 

    ..........

    datatable.SetNextRow
    Next


    count1=datatable.GetSheet("Global").getrowcount
    For i=1 to count1
       x= datatable.GetSheet("Global").getparameter("编码").valuebyrow(i)
    msgbox x
    Next

  • 关键字驱动测试(keyword-driven)原理及特点

    2007-11-19 10:23:09

    关键字驱动测试(keyword-driven)原理及特点 1.         关键字驱动测试是数据驱动测试的一种改进类型 2.         主要关键字包括三类:被操作对象(Item)、操作(Operation)和值(value),用面向对象形式可将其表现为 Item.Operation(Value) 3.         将测试逻辑按照这些关键字进行分解,形成数据文件。 4.         用关键字的形式将测试逻辑封装在数据文件中,测试工具只要能够解释这些关键字即可对其应用自动化   

    其实关键字驱动不是一个新名词,早在QTP发布之前,就有ABTAction-Based Testing)一说,而且有些不是很有名的工具早就用了关键字驱动,如LogigearTestArchitect。不过由于MI工具在国内的普及及QTP良好的易用性和图形化的优越,使得一出现就受到大家的青睐。  

Open Toolbar