dyjyhx 发表于 2005-2-25 17:00:18

我写的一个脚本例子,贴出来请大家指点一下

##############################################################################################
# 测 试 名称      :   参数设 置
# 对 象          :
# 描述          :   1.从Setting配置文本中初始读入的配置是否正确;
#                           2. 设 置窗口中输 入的值 的范围 和不合法输 入的处 #                           理;并检 查 是否写入配置文件
#               
#
#
#作者: 
#日期: 2005/02/23
#修改:
#修改日期
####################################################################################################static lib_path = "D:\\IEC103MSWTest\\myIEC103MSWParaConfigTest2\\IEC103Test_lib";
static file_name_new = "D:\\IEC103MSWTest\\app\\Setting.ini";
static file_name_old= "D:\\IEC103MSWTest\\myIEC103MSWParaConfigTest2\\Settingnew.ini";
static file_temp;#= "D:\\IEC103MSWTest\\myIEC103MSWParaConfigTest2\\temp.ini";
static app_path ="D:\\IEC103MSWTest\\app\\IEC103MSW.exe";
static work_dir ="D:\\IEC103MSWTest\\app";
static file_path                 = getvar("testname");
static table_name        = "setting.xls";
static copyflag;
static data_cycTime_old,data_bufSize_old, data_cycTime_new, data_bufSize_new;

dyjyhx 发表于 2005-2-25 17:00:52

reload(lib_path);
#############################################################################################
file_close(file_name);
#先检 查 应 用程序是否启 动,,如果已经 启 动 ,先关 闭 应 用程序
# 启 动 应 用程序
        rc = open_IEC103MSW();
        if (rc == E_GENERAL_ERROR)
        {
                tl_step("initialization", FAIL, couldnt_open_flight);
                texit;
        }

dyjyhx 发表于 2005-2-25 17:01:15

#比较 从配置文件中读 取的是否正确 (初始化是否正确 )
        compareparaconfig();
    copyflag = 1;
#参数输 入:有效性检 查
table = file_path & "\\" table_name;

ddt_close(table);
file_close(file_name_old);
file_close(file_name_new);
j = 0;

dyjyhx 发表于 2005-2-25 17:01:43

ddt_open(table);
do
{
    if(copyflag = 1)
    {   
      #把配置文件Setting.ini保存为 新的配置文件Settingnew.ini
      file_open(file_name_new,FO_MODE_READ);
                file_open(file_name_old ,FO_MODE_WRITE);
               
      i=0;
                while(file_getline(file_name_new ,line) ==0)
                {
                  i++;
                  file_printf(file_name_old,s&line&"\r\n");
                }          
      file_close(file_name_new);
      file_close(file_name_old);
               
                #从Settingnew.ini文件中获 取信息
      file_open(file_name_old ,FO_MODE_READ);
               
      i=0;
                while(file_getline(file_name_old ,line) ==0)
                {
                  switch(i)
                        {
                                case 0:
                                     break;
                                case 1:
                                       data_cycTime_old = substr(line,6,9);
                                       break;
                                case 2:
                                       data_bufSize_old = substr(line,7,9);
                                       break;
                                default:
                                       break;
                       }
                       i++;
               }       
               file_close(file_name_old);
    }

dyjyhx 发表于 2005-2-25 17:02:05

# IEC103规约主站测试工具
               set_window ("IEC103规约主站测试工具", 2);
                menu_select_item ("控制(V);设 置");        
           # 设置
               set_window ("设置", 7);
                edit_set ("循环周期:", ddt_val(table,"循环周期"));
                edit_set ("缓冲区大小:", ddt_val(table,"缓冲区大小"));
           # button_press ("取 消");
          wait(2);
                button_press ("确 定");
############################################################################################
                # 两 种 结 果:1.) 输 入不合法 2.) 合法的输 入。
#############################################################################################
        #当输 入不合法时 ,出现 信息提示
    if (win_exists ("IEC103MSW Message",1) == E_OK)#在结 果中显 示对 话 框,显 示期望值 和实 际 值
        {
             j++;
             set_window ("IEC103MSW Message");
             # Check to see if the Error message reported on the IEC103MSW Message
               # window is correct.If it is not; the report message displays that
               # the test passed but had an incorrect error message.
                   
               #当数据表中的Message信息和实 际 应 显 示的信息匹配时,,执 行以下语 句。
         if (static_check_text("Message", ddt_val(table, "Error_Message")) == E_OK)
                     {
                            rc=ddt_get_current_row(table,row);
                              if(rc != E_OK)
                               {
                                    tl_msg = sprintf(get_current_row_failed, table, rc);
                                       tl_step (illegal_parameter, FAIL,tl_msg);
                                       row =0;
                               }
                                       tl_msg = sprintf(illegal_parameter_rec, row);
                                       tl_step (tl_msg, PASS, improper_parameter);
                               }
                                # 当数据表中的Message信息和实 际 应 显 示的信息不匹配时 ,执 行 以下语 句。
                               else
                                {
                                       static_get_text ("Message", text);
                                       tl_msg = sprintf(incorrect_msg_improper_parameter,ddt_val(table, "Error_Message") , text);
                                       tl_step (illegal_parameter, FAIL,tl_msg);
                                        error_flag = 1;
                                }
                # IEC103MSW Message
      set_window ("IEC103MSW Message", 1);
          button_press ("确定");
                if(win_exists ("IEC103MSW Message",1) == E_OK)
                  {
                        tl_step("关 闭 信息提示框 ",FAIL,"按一次确 定按钮 后无法关 闭 信息提示框");
                          set_window ("IEC103MSW Message", 1);
                    button_press ("确定");
                          #关 闭 设 置窗口          
                    set_window ("设置", 1);
                    button_press ("取 消");
                  }

               
                file_temp = j; #循环 保存比较 后的文件,否则 会冲掉前一次的保存结 果
                rc = file_compare(file_name_old,file_name_new,file_temp);
                if(rc != E_OK)
                {
                        copyflag = 1;
                        #如果不相等,从Setting.ini(file_name_old)中读 取循环 周期和缓 冲区大小
                        file_open(file_name_new ,FO_MODE_READ);   
                i=0;
                        while(file_getline(file_name_new ,line) ==0)
                        {
                                switch(i)
                                  {
                                        case 0:
                                                 break;
                                        case 1:
                                                 data_cycTime_new = substr(line,6,9);
                                                     break;
                                        case 2:
                                                 data_bufSize_new = substr(line,7,9);
                                                     break;
                                          default:
                                                 break;
                                  }
                            i++;
                                }
                                file_close(file_name_new);
                               
                                if((data_cycTime_old != data_cycTime_new)&&(data_bufSize_old != data_bufSize_new))
                                {
                                  tl_msg = sprintf("输 入的循环 周期= %s,输 入的缓 冲区大小 = %s,配置文件中的循环 周期= %s,配置文件中的缓 冲区大小 = %s",ddt_val(table,"循环周期"),ddt_val(table,"缓冲区大小"),data_cycTime_old,data_bufSize_old);
                        tl_step("程序功能错 误 ",FAIL,tl_msg);
                                }
                                if((data_cycTime_old != data_cycTime_new)&&(data_bufSize_old == data_bufSize_new))
                                {               
                            report_msg("程序可能出现 功能错 误,,请 检 查 !!!,判断依据:如果输 入的循环 周期不为 合法值 ,则 功能错 误 ,认 为 不合法的输 入写入到了配置文件");
#                   tl_msg = sprintf("输 入的循环 周期= %s,输 入的缓 冲区大小 = %s,配置文件中的循环 周期= %s,配置文件中的缓 冲区大小 = %s",ddt_val(table,"循环周期"),ddt_val(table,"缓冲区大小"),data_cycTime_old,data_bufSize_old);
                  tl_msg = sprintf("输 入的循环 周期= %s,配置文件中的循环 周期= %s",ddt_val(table,"循环周期"),data_cycTime_old);
                            tl_step("程序可能出现 功能错 误,",FAIL,"不合法的输 入可能写入到了配置文件,请 检 查 !!!");
                                #输 出:从Setting.ini(file_name_old)中读 取循环 周期和缓 冲区大小,和输 入的循环 周期和缓 冲区大小。
                  #自己判断去。哈哈。不然不好解决了。
                                tl_step("请 比较 然后作出判断",FAIL , tl_msg);
                          }
                                if((data_cycTime_old == data_cycTime_new)&&(data_bufSize_old != data_bufSize_new))
                          {
                                  report_msg("程序可能出现 功能错 误,,请 检 查 !!!,判断依据:如果输 入的缓 冲区大小不为 合法值 ,则 功能错 误 ,认 为 不合法的输 入写入到了配置文件");
                  tl_msg = sprintf("输 入的缓 冲区大小 = %s,配置文件中的缓 冲区大小 = %s",ddt_val(table,"缓冲区大小"),data_bufSize_old);
                                tl_step("程序可能出现 功能错 误,",FAIL,"不合法的输 入可能写入到了配置文件,请 检 查 !!!");
                                #输 出:从Setting.ini(file_name_old)中读 取循环 周期和缓 冲区大小,和输 入的循环 周期和缓 冲区大小。
                  #自己判断去。哈哈。不然不好解决了。
                                tl_step("请 比较 然后作出判断",FAIL , tl_msg);
                                }
                                                               
      }
          
    }
        else
        {
      copyflag = 0;
                tl_msg = sprintf(proper_parameter,ddt_val(table, "Error_Message") );
               tl_step ("输 入", PASS, tl_msg );
        }
       
}while (ddt_next_row(table) == E_OK);
       
ddt_close(table);
# End of test

dyjyhx 发表于 2005-2-25 17:05:23

我刚学习用这个工具写测试脚本,被测程序是我们自己开发的一个测试工具,很烂。简直没法对它进行测试。我的脚本可能很复杂,或者很幼稚,有高手指点一下我会很高兴的。先谢谢。呵呵。

QA_BAY 发表于 2005-2-25 17:58:48

把它写成文件吧,然后上传上来,
值得研究!

生如火花 发表于 2005-2-25 18:53:20

这么多就不看了^^

dyjyhx 发表于 2005-2-26 09:37:06

我不会上传。呵呵。
页: [1]
查看完整版本: 我写的一个脚本例子,贴出来请大家指点一下