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;
}