loadrunner 中有参数化从数据库中取值,但是只是静态的,对于一些要实时取值的数据就 game over 了,比如取短信验证码,因为 mysql 中有一个 libmysql.dll,里面提供了可以操作数据库的方法,所以我们可以调用这个 dll 连接数据库实时从数据库中取值
Action()
{
int status; //定义状态变量,0表示成功,非0表示失败
int db_connection; //定义初始化状态
int result; //定义查询结果状态
char *server = "*****"; // 数据库的ip地址
char *user = "test"; // 用户名
char *password = "123456"; // 密码
char *database = "*****"; // 数据库名称
int port = 3306; // 端口
int socket = NULL;
int flags = 0;
char** result_set; //定义查询的结果集
//数据库操作
status=lr_load_dll("E:\\VuGen Scripts\\libmysql.dll");
if (status!=0) {
lr_error_message("不能加载dll文件");
lr_error_message("%s",mysql_error(db_connection));//打印加载失败错误信息
mysql_close(db_connection);
lr_abort();
}
db_connection=mysql_init(NULL); //初始化mysql连接
if (db_connection==NULL ) { //如果链接状态为空就退出
lr_abort();
}
status=mysql_real_connect(db_connection,server,user,password,database,port,socket,flags);//连接到mysql数据库
//打印连接不成功的原因
if (status==NULL) {
lr_error_message("%s",mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
}
//调用dll方法执行查询语句
status=mysql_query(db_connection,"select vcode from cb_vcode_list where telphone=180******** and is_deleted=0");
//打印查询失败的原因
if (status!=0) {
lr_error_message("%s",mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
}
result=mysql_use_result(db_connection);//查询数据表
while (result_set=(char**)mysql_fetch_row(result)) {
lr_save_string(result_set[0],"vcode"); //将获取的数据保存为参数vcode
lr_output_message("vcode is %s",lr_eval_string("{vcode}")); //打印数据
if ( result_set==NULL) { //如果查询结果行为空 ,就关闭并退出
lr_error_message("没有查询到结果");
mysql_free_result(result);
mysql_close(db_connection);
lr_abort();
}
}
mysql_free_result(result); //释放结果集
mysql_close(db_connection); //关闭数据库连接
return 0;
}