LoadRunner利用ODBC编写MySql脚本

上一篇 / 下一篇  2012-02-20 15:23:12 / 个人分类:lr

 LoadRunner测试数据库是模拟客户端去连接数据库服务器,因此,需要协议(或者说驱动的支持)。LoadRunner本身直接支持Oracle、SqlServer数据库,这两个数据库直接选择相应的协议就可以录制脚本。而MySql数据库只能利用ODBC协议来录制(编写)脚本,所以必须要MySql的ODBC驱动,和支持ODBC的查询分析器(录脚本需要,自己编写就不需要)。pMjU2`oFs72047

1、首先要安装MySql的ODBC驱动,MyODBC 3.51.11 WIN。51Testing软件测试网+b+Cf)Y!J

2、从“控制面板”打开“数据源ODBC”,如果没有找到(我的电脑上就没有找到)。到桌面,新建一个快捷方式,目标位置:%SystemRoot%/system32/odbcad32.exe。

"T*E/{2XggYN72047

3、打开ODBC管理程序,添加的驱动为“MySQL ODBC 3.51 Driver”,然后填写一些ip、用户名、密码之类的,测试一下就可以了。(这一步其实是非必须的,如果写连接串,就不需要,如果要用DNS数据库名,就需要)51Testing软件测试网7g*V#[o]:hcQ S/vi

4、安装一个查询分析器,这个查询分析器必须是支持ODBC的(这是必须的,否则录不上),这很不好找。我找了一个,还不好用,叫“通用数据库查询分析器”。http://www.onlinedown.net/soft/31366.htm51Testing软件测试网)e^}(lq#k3m L3VMz*m(M

5、启动LoadRunner,Create Scripts;Application type选择Win32 Applications;Program record选择第4步的查询分析器位置,记得查询分析器选择“ODBC”,才能录得上;录完了,运行一下是否正常。

'w5D(_U V&AJa(p72047

6、Run Load Tests的时候,如果失败,看看License是否支持,用global-100的License就可以了。51Testing软件测试网H Zp e rJ q1J)E

X%k(a$MA$FN Q72047

录制的脚本是惨不忍睹(又臭又长),所以,我试着手工编写了一个简单的,每行都有注释,如果要高级的,请参考LoadRunner的帮助文档。

"f?R't2G^72047
  1. #include"lrd.h"
  2. Action()
  3. {
  4. staticLRD_INIT_INFOInitInfo={LRD_INIT_INFO_EYECAT};
  5. staticLRD_DEFAULT_DB_VERSIONDBTypeVersion[]=
  6. {
  7. {LRD_DBTYPE_ODBC,LRD_DBVERSION_ODBC_30},
  8. {LRD_DBTYPE_NONE,LRD_DBVERSION_NONE}
  9. };
  10. staticLRD_CONTEXTFAR*Ctx1;
  11. staticLRD_CONNECTIONFAR*Con1;
  12. staticLRD_CURSORFAR*Csr1;
  13. //上面的定义的代码如果录制脚本,在vdf.h中就有定义,同时还有一些其他文件
  14. //如果手写脚本,则需要手工添加,主要是定义各种变量
  15. //查询行数
  16. unsignedlongcount=0;
  17. //初始
  18. lrd_init(&InitInfo,DBTypeVersion);
  19. //打开上下文
  20. lrd_open_context(&Ctx1,LRD_DBTYPE_ODBC,0,0,0);
  21. //申请连接的内存
  22. lrd_alloc_connection(&Con1,LRD_DBTYPE_ODBC,Ctx1,0,0);
  23. //打开连接,注意DRIVER就是上面安装的
  24. lrd_open_connection(&Con1,LRD_DBTYPE_ODBC,"","","","DRIVER=MySQLODBC3.51Driver;UID=root;PWD=123456;SERVER=192.168.1.99;DATABASE=TestDB",Ctx1,1,0);
  25. //打开游标
  26. lrd_open_cursor(&Csr1,Con1,0);
  27. //Sql语句,注意1代表的意思是,立马执行
  28. lrd_stmt(Csr1,"selectcolumn1fromtable1wherecolum1=1",-1,1,0,0);
  29. //统计行数到count变量中
  30. lrd_row_count(Csr1,&count,0);
  31. //打印消息
  32. lr_message("count=%d",count);
  33. //先关闭游标
  34. lrd_close_cursor(&Csr1,0);
  35. //再关闭连接
  36. lrd_close_connection(&Con1,0,0);
  37. //释放连接,和alloc相呼应,否则有内存泄露
  38. lrd_free_connection(&Con1,0,0);
  39. //再关闭上下文
  40. lrd_close_context(&Ctx1,0,0);
  41. //完毕,返回0
  42. return0;
  43. }

写完了,自己运行一下可以查看日志如下:



------------------------------------------------------------------------------

Starting iteration 1.

Starting action Action.
Action.c(8): lrd_open_connection: User="", Server=""

Action.c(11): lrd_stmt: select column1 from table1 where colum1 = 1;

count= 1
Action.c(16): lrd_close_connection: User="", Server=""

Ending action Action.------------------------------------------------------------------------------



count = 1表示查询成功了



TAG:

 

评分:0

我来说两句

日历

« 2024-04-06  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 36132
  • 日志数: 104
  • 建立时间: 2011-10-10
  • 更新时间: 2012-04-12

RSS订阅

Open Toolbar