51Testing软件测试论坛

标题: 如何在从参数文件中取出指定行的数据? [打印本页]

作者: gp_jl    时间: 2008-3-26 11:54
标题: 如何在从参数文件中取出指定行的数据?
希望碰见过类似问题或者是知道怎样让查询的参数在取值时与自动生成的数据保持一致的XDJM,请给个解决方式。

设计脚本的目的:
1.自动生成一系列唯一的文本数据,并将其输入到.dat文件中;
2.查询条件及相应的检查点都使用上一步中生成的数据作为参数化的值;

实现中遇见的问题:
1.单独调试create_file()和search()均无问题产生;
2.当组合两个Action时,虽然create_file()在前,但是仍然必须保证该文件中已经存在至少一行数据!否则在做Search()时,将提示未找到值,并且查询的时候都使用
“{chaxundewenben}”作为查询和检查的数据了。
3.虽然在文件中添加了一行数据,但是执行的时候没有到达最初设计的目的。现在执行的结果是每次迭代使用的查询数据都是上次迭代中自动生成的数据。也就是差了一行
数据。

代码如下:
//向.dat文件中输入数据,以便在后续查询时作为参数化的基础数据
create_file()
{
        int tmp = 0;
        static int iter=0;
        char buf[6];       
        int datetime;
        long file_stream;
        char *filename="d:\\param.dat";

//使用时间戳,生成一个唯一的文本,供后续查询、检查使用   
        lr_save_datetime("%m%d%H%M",0, "DateTimeParam");
        datetime = atoi(lr_eval_string("{DateTimeParam}"));
        itoa(datetime, buf, 36);
        lr_save_string(buf, "ConvertedDateTimeParam");               
        lr_save_string(lr_eval_string("T{ConvertedDateTimeParam}{NewParam}"), "SearchtoText");               
        lr_output_message("Unique Search Text: %s", lr_eval_string("{SearchtoText}"));               

//打开、输入、关闭文件
        if((file_stream=fopen(filename,"a+"))==NULL){
                lr_error_message("Cannot open the file:%s",filename);
                return -1;
        }               
        fprintf(file_stream,"\n%s", lr_eval_string("{SearchtoText}"));               
        if(fclose(file_stream)){
                lr_error_message("Cannot close the file:%s",filename);
        }

        return 0;
}

//使用create_file中的文件作为参数值的文件,进行查询和检查
Search()
{
        web_url("www.baidu.com",
                "URL=http://www.baidu.com/",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t1.inf",
                "Mode=HTML",
                LAST);

//设置检查点,该参数取自create_file文件中的值
        web_reg_find("Text={chaxundewenben}",
                "Search=body",
                LAST);
        lr_message("1search text is %s",lr_eval_string("{chaxundewenben}"));

//执行查询操作,查询的文本进行参数化,该参数取自create_file文件中的值
        web_submit_form("s",
                "Snapshot=t2.inf",
                ITEMDATA,
                "Name=wd", "Value={chaxundewenben}", ENDITEM,
                EXTRARES,
                "URL=http://s.baidu.com/w.gif?path=http://www.baidu.com/s?wd=tt&cl=3&t=1206497983090", "Referer=http://www.baidu.com/s?wd=tt&cl=3", ENDITEM,
                LAST);
        lr_message("2search text is %s",lr_eval_string("{chaxundewenben}"));

        return 0;
}
作者: gp_jl    时间: 2008-3-26 12:27
标题: 问题已解决!
只要把写文件时的\n放在 %s 后面就没有这个问题了。
create_file()
{
        int tmp = 0;
        static int iter=0;
        char buf[6];       
        int datetime;
        long file_stream;
        char *filename="d:\\param.dat";

//使用时间戳,生成一个唯一的文本,供后续查询、检查使用   
        lr_save_datetime("%m%d%H%M",0, "DateTimeParam");
        datetime = atoi(lr_eval_string("{DateTimeParam}"));
        itoa(datetime, buf, 36);
        lr_save_string(buf, "ConvertedDateTimeParam");               
        lr_save_string(lr_eval_string("T{ConvertedDateTimeParam}{NewParam}"), "SearchtoText");               
        lr_output_message("Unique Search Text: %s", lr_eval_string("{SearchtoText}"));               

//打开、输入、关闭文件
        if((file_stream=fopen(filename,"a+"))==NULL){
                lr_error_message("Cannot open the file:%s",filename);
                return -1;
        }               
        fprintf(file_stream,"%s\n", lr_eval_string("{SearchtoText}"));       
                if(fclose(file_stream)){
                lr_error_message("Cannot close the file:%s",filename);
        }

        return 0;
}
作者: cainiaoxiao    时间: 2008-3-26 13:08
研究一下
我也遇到过此类问题,不知道怎么解决




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2