我写的一个脚本例子,贴出来请大家指点一下
############################################################################################### 测 试 名称 : 参数设 置
# 对 象 :
# 描述 : 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; reload(lib_path);
#############################################################################################
file_close(file_name);
#先检 查 应 用程序是否启 动,,如果已经 启 动 ,先关 闭 应 用程序
# 启 动 应 用程序
rc = open_IEC103MSW();
if (rc == E_GENERAL_ERROR)
{
tl_step("initialization", FAIL, couldnt_open_flight);
texit;
} #比较 从配置文件中读 取的是否正确 (初始化是否正确 )
compareparaconfig();
copyflag = 1;
#参数输 入:有效性检 查
table = file_path & "\\" table_name;
ddt_close(table);
file_close(file_name_old);
file_close(file_name_new);
j = 0; 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);
} # 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 我刚学习用这个工具写测试脚本,被测程序是我们自己开发的一个测试工具,很烂。简直没法对它进行测试。我的脚本可能很复杂,或者很幼稚,有高手指点一下我会很高兴的。先谢谢。呵呵。 把它写成文件吧,然后上传上来,
值得研究! 这么多就不看了^^ 我不会上传。呵呵。
页:
[1]