一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“Fread及Function的使用”。
一、fread
表示读文件
函数语法:
size_t fread( void *buffer, size_t size, size_t count, FILE *file_pointer
);
参数说明:
buffer:表示用来存储数据流
size:表示每次读取的字符大小
count:表示读取的字符数
file_pointer:表示文件指针
int count,total;
char buffer[1000];
char *filename = "C:\\test.txt";
long file_stream;
count = 0;
total = 0;
if((file_stream=fopen(filename,"r")) == NULL)
{
lr_error_message("can not open file:%s",filename);
}
else
{
while(!feof(file_stream)) //判断是否到文件尾
{
count = fread(buffer,sizeof(char),1000,file_stream);
if (ferror(file_stream)) //表示对文件的操作是否存在错误
{
lr_output_message ("Error reading file %s", filename);
break;
}
total = total + count;
}
}
lr_output_message ("Total number of bytes read = %d", total );
if (fclose(file_stream))
lr_error_message ("Error closing file %s", filename);
二、Function的使用
使用LoadRunner来调用Function的目的是为了让程序变的更简单。
其步骤如下:
1.定义一个Function
数据类型 函数名(数据类型 形参1,...,数据类型 形参n)
如果该函数没有返回值,那么数据类型应该为void
{
函数体;
}
int add(int x,int y)
{
return x + y;
}
void add(int x,int y)
{
lr_output_message("%d",x + y);
}
2.在action中调用自定义的Function
函数名(实参1,....实参n);
res = add(1,2);
3.添加.h的头文件
先创建一个.h的头文件
将函数的内容写入到.h的头文件中
.h的头文件可以放在两个不同的位置
一是:将写好的.h头文件拷贝到loadrunner安装目录下的include目录下
二是:将写好的.h头文件拷贝到当前脚本所保存的目录下
因为LoadRunner是自动去检索这两个目录下的头文件
如果添加到loadrunner安装目录下的include目录下有一个好处,就是如果有多个脚本需要调用这个文件,那么不用将这个文件分别拷贝到不同的脚本下面。
4.在globals.h中添加我们写好的.h头文件
#include "头文件名"
如
#include "add.h"
实例:将加入购物车的功能封装成一个Function
将下面的代码拷贝到一个goods_add_cart.h的头文件中
void add_to_cart(int goods_id)
{
char goods_id_index[32];
itoa(goods_id,goods_id_index, 10);
lr_save_string(goods_id_index, "goods_id_request");
web_custom_request("flow.php",
"URL=http://192.168.0.119:8091/ecshop3/flow.php?step=add_to_cart",
"Method=POST",
"Resource=0",
"RecContentType=text/html",
"Referer=http://192.168.0.119:8091/ecshop3/goods.php?id=60",
"Snapshot=t68.inf",
"Mode=HTTP",
"Body=goods={\"quick\":1,\"spec\":[],\"goods_id\":
{goods_id_request},\"number\":\"1\",\"parent\":0}",
LAST);
}
下面是action调用add_to_cart函数的过程,并对传入的数据进行参数化
Action()
{
add_to_cart(atoi(lr_eval_string("{goods_id}")));
return 0;
}