google搜索 51Testing站内搜索                    软件测试门户 | 软件测试培 训 | 文章资料精选 | 软件测试论坛 | 软件测试博客 | 测试招聘求职 
打印

登陆界面的测试程序

登陆界面的测试程序


登陆名和密码  我想用数据驱动,并判断登陆名和密码是否一致。如果不一致,报出错。用tl_setp函数。怎么编写测试函数。请高手指点一下。

TOP

在线等。谢谢

TOP

table = "default.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
        ddt_set_row(table,table_Row);
       
        # Login
                set_window ("Login", 3);
                edit_set ("Agent Name:", ddt_val(table,"Agent_Name1"));
                password_edit_set("Password:", ddt_val(table,"Password1"));

                button_press ("OK");
       
#         # Flight Reservations
#                 set_window ("Flight Reservations", 1);
#                 button_press ("确定");
#判断       
                if(ddt_val(table,"Agent_Name1")== "mercury" ||ddt_val(table,"Password1") == "mercury")
                {
                   tl_step("用户 名和密码  ",0,"正确 !");
                }
                else
                {
                  tl_step("用户 名和密码  ",1,"不正确 !");
                }
               
                if(ddt_val(table,"Agent_Name1")== "" && ddt_val(table,"Password1") == "")
                {
                  tl_step("用户 名和密码  ",1,"不能为 空!");
                }
}
ddt_close(table);

大家帮我看看,这个脚本有没有问题呀?

TOP

当密码或用户名为空时,也没有提示,怎么回事呀

TOP

你用的是 && ,只有用户名和密码都为空才会进去的

TOP

那个我知道了,我把与和或写错了。但我该过来后还是不能运行

TOP

问题已经解决!
本人已经在机子上试过了,可以做到!
现在我是这样做的.
先录制,然后做数据驱动!
数据就是这以下几个
name      password1
asd           asdfasdf
空格          空格
sdfwerw    sdfsdf





table = "e1.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
        ddt_set_row(table,table_Row);
       
        # Login
                set_window ("Login", 9);
                obj_type ("Agent Name:","<kCtrl_L>");
                edit_set ("Agent Name:", ddt_val(table,"Name"));
                password_edit_set("Password:", ddt_val(table,"Password1"));
                button_press ("OK");
        # 字符输入错误,弹出错误窗口
            if  (win_exists("Flight Reservations")==E_OK)
           {
                  win_mouse_click ("Flight Reservations", 120, 13);
                  set_window ("Flight Reservations", 3);
                  button_press ("确定");
                                                 }
   # 字符输入错误,弹出错误窗口
           if (win_exists("Flight Reservations")==E_OK)
       
            {
                     set_window ("Flight Reservations", 22);
                 button_press ("确定");
                                             }

    #如果用户名和密码都为用空        
        if(ddt_val(table,"Name")== ""||ddt_val(table,"Password") == "")
                {
                      tl_step("用户名和密码",0,"用户名和密码都为空!");}
                                          else
                                            {
                                                    pause(ddt_val(table,"Name"));#如果不为空就输出
                                                    pause(ddt_val(table,"Password"));
                                               
                }
}

ddt_close(table);


记住,LOGIN 窗口如果PASSWORD三次错误,它会自动退出!每次执行时,记得重新打开!如果不想就在最后加一句
invoke_application()就可以了!
以上是基本的程序,你看完要自己在自己的机子上做才行!

TOP

谢谢,我试一下

TOP

# 字符输入错误,弹出错误窗口
            if  (win_exists("Flight Reservations")==E_OK)
           {
                  win_mouse_click ("Flight Reservations", 120, 13);
                  set_window ("Flight Reservations", 3);
                  button_press ("确定");
                                                 }
   # 字符输入错误,弹出错误窗口
           if (win_exists("Flight Reservations")==E_OK)
        
            {
                     set_window ("Flight Reservations", 22);
                 button_press ("确定");
                                             }
两个if语句的判定条件一样,是怎么来判断的啊,不明白

TOP

如果没有什么其它的窗口弹出那两个是一样的!没有什么区别!
但如果你的数据输入不同那就不一样了,
就是你设置的数据有长有短.
你观察一下出错的可能性有几种,
当所有可能出现时,你的程序可不可以做到,
你都要想到,
而不是录制完就完了!
如果觉得多余那就把它拿掉吧!

TOP

#如果用户名和密码都为用空        
        if(ddt_val(table,"Name")== ""||ddt_val(table,"Password") == "")
                {
                      tl_step("用户名和密码",0,"用户名和密码都为空!");}
                                          else
                                            {
                                                    pause(ddt_val(table,"Name"));#如果不为空就输出
                                                    pause(ddt_val(table,"Password"));
                                                
                }
}

执行else语句后,出现输出用户名和密码的对话框,要手动点击Contiune才能继续。怎么让它自动继续?我想手动在GUI Map只能感加入这个按钮,但不知道他的Windows名称该填什么?

TOP

如果没有什么其它的窗口弹出那两个是一样的!没有什么区别!
但如果你的数据输入不同那就不一样了,
就是你设置的数据有长有短.
你观察一下出错的可能性有几种,
当所有可能出现时,你的程序可不可以做到,
你都要想到,
而不是录制完就完了!
如果觉得多余那就把它拿掉吧!
---------------------------------------------------------------------------------------------------------

我试过了,当输入长度不同时(比如输入2个字符,实际要求要大于4个字符),一个判断也能全报出来。我认为一个判断就可以了,不知道我是不是没考虑全面。请斑竹指教

TOP

引用:
Originally posted by dyjyhx at 2004-12-29 08:32 AM:
#如果用户名和密码都为用空        
        if(ddt_val(table,"Name")== ""||ddt_val(table,"Password") == "")
                {
                      tl_step ...
你可以把pause拿掉,它只是拿来显示给你看的窗口,当然会有CONTINUE出现!
就是测试用的,让你知道如果为否是输入出什么,这样更清了解楚程序!

TOP

引用:
Originally posted by dyjyhx at 2004-12-29 08:39 AM:
如果没有什么其它的窗口弹出那两个是一样的!没有什么区别!
但如果你的数据输入不同那就不一样了,
就是你设置的数据有长有短.
你观察一下出错的可能性有几种,
当所有可能出现时,你的程序可不可以做到,
你都要 ...
当时我也不知道怎么试的,如果觉得多余就用#让它不执行!
如果下次碰到再放出来!
现在没有什么时间去想它!

TOP

谢谢

TOP

在数据驱动时,当有两个以上测试数据时
# Login
                set_window ("Login", 9);
                obj_type ("Agent Name:","<kCtrl_L>");
                edit_set ("Agent Name:", ddt_val(table,"Name"));
                password_edit_set("Password:", ddt_val(table,"Password1"));
                button_press ("OK");
中的password_edit_set("Password:", ddt_val(table,"Password1"));语句在执行时,报错误
Function "password_edit_set"

Line: 14

Error: Illegal parameter.

不知道什么原因,请高手指点。

TOP

你的Password没有改名吧?
你应该把它改成不能跟PASSWORD同名的,
你试一下把它改成其它的

TOP

我改过了,改成Password1了,并且当只有一个数据驱动时运行就正常,两个或两个数据以上的驱动就报这个错误

TOP

问题解决了,我把Password1改成其它的名字比如Passtest就可以了。可能是脚本在读名字的时候有长度限制,把Password1仍读成了Password,后面的字符给截断了。造成名字冲突的原因。

TOP

我晕,运行几遍后,又来了,是不是测试程序本身的问题呀

TOP

 
当前时区 GMT+8, 现在时间是 2008-10-8 16:14Copyright(C)上海博为峰软件技术有限公司 2001-2007 电话:021-64471599-8017
当您在访问网站、论坛及博客过程中遇到问题时可发送email:webmaster@51testing.com或发送论坛短信至管理员风在吹