51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 15714|回复: 46
打印 上一主题 下一主题

登陆界面的测试程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2004-12-28 10:28:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
登陆名和密码  我想用数据驱动,并判断登陆名和密码是否一致。如果不一致,报出错。用tl_setp函数。怎么编写测试函数。请高手指点一下。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

2#
 楼主| 发表于 2004-12-28 10:29:13 | 只看该作者
在线等。谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2004-12-28 11:16:56 | 只看该作者
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);

大家帮我看看,这个脚本有没有问题呀?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2004-12-28 11:18:13 | 只看该作者
当密码或用户名为空时,也没有提示,怎么回事呀
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2004-12-28 12:08:40 | 只看该作者
你用的是 && ,只有用户名和密码都为空才会进去的
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2004-12-28 14:00:15 | 只看该作者
那个我知道了,我把与和或写错了。但我该过来后还是不能运行
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2004-12-28 15:39:54 | 只看该作者
问题已经解决!
本人已经在机子上试过了,可以做到!
现在我是这样做的.
先录制,然后做数据驱动!
数据就是这以下几个
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()就可以了!
以上是基本的程序,你看完要自己在自己的机子上做才行!
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2004-12-28 16:14:35 | 只看该作者
谢谢,我试一下
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2004-12-28 23:43:59 | 只看该作者
# 字符输入错误,弹出错误窗口
            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语句的判定条件一样,是怎么来判断的啊,不明白
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2004-12-29 08:23:14 | 只看该作者
如果没有什么其它的窗口弹出那两个是一样的!没有什么区别!
但如果你的数据输入不同那就不一样了,
就是你设置的数据有长有短.
你观察一下出错的可能性有几种,
当所有可能出现时,你的程序可不可以做到,
你都要想到,
而不是录制完就完了!
如果觉得多余那就把它拿掉吧!
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2004-12-29 08:32:56 | 只看该作者
#如果用户名和密码都为用空        
        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名称该填什么?
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2004-12-29 08:39:23 | 只看该作者
如果没有什么其它的窗口弹出那两个是一样的!没有什么区别!
但如果你的数据输入不同那就不一样了,
就是你设置的数据有长有短.
你观察一下出错的可能性有几种,
当所有可能出现时,你的程序可不可以做到,
你都要想到,
而不是录制完就完了!
如果觉得多余那就把它拿掉吧!
---------------------------------------------------------------------------------------------------------

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

使用道具 举报

该用户从未签到

13#
发表于 2004-12-29 08:51:50 | 只看该作者
Originally posted by dyjyhx at 2004-12-29 08:32 AM:
#如果用户名和密码都为用空        
        if(ddt_val(table,"Name")== ""||ddt_val(table,"Password") == "")
                {
                      tl_step ...

你可以把pause拿掉,它只是拿来显示给你看的窗口,当然会有CONTINUE出现!
就是测试用的,让你知道如果为否是输入出什么,这样更清了解楚程序!
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2004-12-29 08:55:36 | 只看该作者
Originally posted by dyjyhx at 2004-12-29 08:39 AM:
如果没有什么其它的窗口弹出那两个是一样的!没有什么区别!
但如果你的数据输入不同那就不一样了,
就是你设置的数据有长有短.
你观察一下出错的可能性有几种,
当所有可能出现时,你的程序可不可以做到,
你都要 ...

当时我也不知道怎么试的,如果觉得多余就用#让它不执行!
如果下次碰到再放出来!
现在没有什么时间去想它!
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2004-12-29 09:04:23 | 只看该作者
谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2004-12-29 10:03:19 | 只看该作者
在数据驱动时,当有两个以上测试数据时
# 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.

不知道什么原因,请高手指点。
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2004-12-29 10:10:13 | 只看该作者
你的Password没有改名吧?
你应该把它改成不能跟PASSWORD同名的,
你试一下把它改成其它的
回复 支持 反对

使用道具 举报

该用户从未签到

18#
 楼主| 发表于 2004-12-29 10:15:18 | 只看该作者
我改过了,改成Password1了,并且当只有一个数据驱动时运行就正常,两个或两个数据以上的驱动就报这个错误
回复 支持 反对

使用道具 举报

该用户从未签到

19#
 楼主| 发表于 2004-12-29 10:42:17 | 只看该作者
问题解决了,我把Password1改成其它的名字比如Passtest就可以了。可能是脚本在读名字的时候有长度限制,把Password1仍读成了Password,后面的字符给截断了。造成名字冲突的原因。
回复 支持 反对

使用道具 举报

该用户从未签到

20#
 楼主| 发表于 2004-12-29 10:50:30 | 只看该作者
我晕,运行几遍后,又来了,是不是测试程序本身的问题呀
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-11 18:23 , Processed in 0.094155 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表