LoadRunner(一)LR文件整个读取和计算长度
今天在项目上遇到一个问题,需要对上传功能进行压力测试,在接口上分析后,发现接口只接收base64的编码格式数据流,那么就涉及到需要针对上传文件先进行Base64编码,然后再读取出来,传入接口。
Base64编码工具网上很多,针对文件进行编码的也有,不过没找到批量进行编码和保存的,这里先拿一个来用,等有空了自己写一个批量编码的。编码完成后,可将编码内容保存到记事本里面,编码后的样子大概如下:
经过测试发现,编码后文件大小会比编码前大20%左右,如果接口对数据流大小有限制的,一定要留意原始文件的长度。
回到正题,下面贴出来loadrunner文件读取部分代码,loadrunner如果自己不对文件指针进行操作的话,会默认只读一行而不是所有内容,一定要注意,代码如下:
char Data[1024*1024*2]; //此变量需设置为全局变量,否则会出现定义超长的问题
char buffer[1024*1024*2]; //此变量需设置为全局变量,否则会出现定义超长的问题
int count = 0;
long file_stream;
char * filename = "E:/上传/123.txt";
if ((file_stream = fopen(filename, "rb")) == NULL ) //读写方式打开文件
{
lr_error_message ("Cannot open %s", filename);
return -1;
}
// 一直读到文件结束
while (!feof(file_stream))
{
fread(buffer, sizeof(char), 1024*1024*2, file_stream);
//此BUFFER大小可以自行设置,建议设置到接口允许的最大值,经测试,设置过小,而文件较大的时候,读取会出现读不完的问题,原因未知
if (ferror(file_stream))
{
lr_output_message ("Error reading file %s", filename);
break;
}
strcat(Data,buffer);
}
count = strlen(Data);
lr_output_message ("Total number of bytes read = %d", count);
lr_output_message ("Data is = %s", Data);
// Close the file stream
if (fclose(file_stream))
{
lr_error_message ("Error closing file %s", filename);
}
输出结果如下: