计算器自动测试
想做一个计算器自动测试的脚本,初步设想如下:1。将所有计算器测试用例输入excel表格
2。循环读取表格内容,一次截取字串,press 相应按键
3。每个计算结果截图,以后每次执行对比图
问题一:就是如何根据我得到的数字来按相应按键
比如计算用例:"1+2=",当我读到数字1的时候如何让他去自动按KEY"A"??
问题二:遇到两个字符组合成的运算符如何处理?
比如 :M+;M-;MR;Ca等等
希望高手门不吝赐教阿 1、你可以用数据驱动,录制一段关于计算器按键并计算的相关操作,然后在主脚本中把相关数据参数化,就可以循环读取EXCEL表中的数据并进行计算器的按键操作。
例如:
脚本:
table2="d:\\table.xls";
ddt_open(table,DDT_MODE_READWRITE);
ddt_get_row_count(table,row_count);
system("calc");
set_window("计算器");
for(i=1;i<=row_count;i++)
{
ddt_set_row(table,i);
set_window ("计算器", 1);
button_press (ddt_val(table,data1));
button_press ("+");
button_press (ddt_val(talbe,data2));
button_press ("=");
}
ddt_close(table);
2、你所说的两个字符相加是指类似于“12+24=”这样的吗?如果是可以看看这个贴子http://bbs.51testing.com/viewthread.php?tid=52159&highlight=%BC%C6%CB%E3%C6%F7
[ 本帖最后由 shiwomyw 于 2007-1-4 20:11 编辑 ]
楼上的TX,多谢你的回答
我的问题其实是这样的1。就是我测的这个计算器按键是和输入法在一起的,类似于手机键盘,数字键是和字母键在一起的,也就是我读到一个数字的时候要先把他转成字母键,比如我读到"1"的时候,要把它转成对应的字母键"q",我目前的想法是将所有用例写在table1.exl中,将按键对应表写在table2.exl中,当读到数字或符号时先去table2中查找对应按键。
2。如果按以上做法作的话会遇到一个问题,比如计算用例中有两个字符组合的运算符号,比如"m+","m-"之类的,我就不知道该怎么样去做了,应为我在读字符的时候是一位一位去读的 我是这样想的,但感觉这种方法比较笨,你可以参考一下。
1、在table2中存放数据时按照这种规则,第一行对应的数字就是“1”,第二行对应的数字就是“2”,行数和数字是一一对应的,这样就可以根据你从table1中取到的值比如“7”就可以到table2中取第7行对应的字母。
2、取字符后进行判断。在取字符时可以进行判断如果是字母如“M”,则再次取字符,这次取两位。 第1個問題已經解決了,下面是我寫的代碼,請指教(沒有處理特殊的運算符號),
第2個問題我覺得你的方法是可行的,但是[+/-]好像不能處理,我的想法是在製作測試用例時將運算符號用[]扩起來,
ddt_close_all_tables();
table1="d:\\table1.xls";
table2="d:\\table2.xls";
if(ddt_open(table1,DDT_MODE_READWRITE)==E_OK)
{pause("table1_open");}
if(ddt_open(table2,DDT_MODE_READWRITE)==E_OK)
{pause("table2_open");}
ddt_get_row_count(table1,row_count);
for(i=1;i<=row_count;i++)
{
m=ddt_val (table1,"example");
for(n=1;n<=length (m);n++)
{
l=substr (m,n,1);
ddt_get_row_count(table2,row_count1);
for(k=1;k<=row_count1;k++)
{
if(compare_text (l, ddt_val (table2,"val")))
{
l=ddt_val (table2,"key");
button_press(l);
ddt_set_row ( table2,1);
k=row_count1+1;
}
else
ddt_next_row (table2);
}
}
wait(1);
win_check_bitmap("Canon V903 (Background)", i, 1, 144, 116, 295, 56);
ddt_next_row (table1);
}
ddt_close_all_tables();
页:
[1]