第6章 常见的被测系统
6.1 Windows GUI应用程序
第一种常见的被测系统是Windows图形用户界面(Graphical User Interface,GUI)应用程序,它是指运行在Windows操作系统上的具有图形用户界面的本地应用程序。Windows操作系统自带的计算器程序就是一个典型的Windows GUI应用程序。Robot Framework提供了AutoItLibrary来专门测试这类程序。
6.1.1 安装AutoItLibrary
要安装AutoItLibrary,最简单的方法是用pip。首先,在PyPI网站上搜索AutoItLibrary,找到一个叫作robotframework-autoitlibrary的Robot Framework库。另外,也可以在命令行窗口中用“pip search autoitlibrary”进行查找。在Windows命令行窗口中输入以下命令安装AutoItLibrary。
c:\> pip install robotframework-autoitlibrary |
安装过程中会看见如下下载进度和安装结果。
Collecting robotframework-autoitlibrary Downloading ******files.pythonhosted***/packages/4e/a4/9e51fe35b1da7a006b773c9c234f78e89 bcc4f267152c4e9fa8260631fa8/robotframework-autoitlibrary-1.2.2.zip (701kB) 100% |████████████████████████████████████████| 706kB 276kB/s Collecting pywin32 (from robotframework-autoitlibrary) Downloading https://files.pythonhosted.org/packages/83/cc/2e39fa39b804f7b6e768a37657d7 5eb14cd917d1f43f376dad9f7c366ccf/pywin32-224-cp27-cp27m-win_amd64.whl (7.4MB) 100% |████████████████████████████████████████| 7.4MB 330kB/s Collecting pillow (from robotframework-autoitlibrary) Downloading https://files.pythonhosted.org/packages/f1/72/9e48d90b01f8968e31a05fb9903a 5626a42a67f7a831963e880ba90de65f/Pillow-5.3.0-cp27-cp27m-win_amd64.whl (1.5MB) 100% |████████████████████████████████████████| 1.5MB 310kB/s Installing collected packages: pywin32, pillow, robotframework-autoitlibrary Running setup.py install for robotframework-autoitlibrary ... done Successfully installed pillow-5.3.0 pywin32-224 robotframework-autoitlibrary-1.2.2 |
如果看见上面的消息,就表示安装成功了。之后我们打开文件管理器,导航到AutoItLibrary的安装目录C:\RobotFramework\Extensions\AutoItLibrary。里面的AutoItLibrary.html介绍了AutoItLibrary的使用方法和所有可用的关键字。
6.1.2 Web版计算器测试示例
在Tests目录下有一个计算器测试用例,双击RobotIDE.bat就可以打开RIDE,查看AutoItLibrary中的计算器测试用例,如图6-1所示。
在左侧窗格中,根据树状目录结构,我们可以得知这个测试套件包含7个测试用例,分别测试了整数的加减乘除、十六进制数的加减以及屏幕截图功能。
在右侧窗格中,我们可以看见导入AutoItLibrary的方法。
Library AutoItLibrary ${OUTPUT DIR} 10 ${True} |
${OUTPUT DIR}是Robot Framework中的自动变量,表示输出目录的绝对路径。而${True}是Robot Framework中的特殊变量,表示true。这3个参数在帮助文档AutoItLibrary.html里有说明,如图6-2所示。
在右侧窗格中,除了AutoItLibrary之外,这个测试用例还引入了Collections库和String库,以及一个变量文件CalculatorGUIMap.py。这个变量文件定义了不同版本计算器中按键的对应值。
图6-1 AutoItLibrary中的计算器测试用例
图6-2 导入AutoItLibrary时的参数列表
遗憾的是,这个测试用例只能在英文版的Windows系统上运行,在中文版的Windows系统上运行时会报错,因为中文版计算器和英文版计算器界面上的文字不一致。我们可以简单地把Windows系统的语言改成英语来调试所有测试用例。但是为了了解AutoItLibrary的用法,我们需要修改测试用例,让它能检查中文版计算器。英文和中文版本计算器的界面分别如图6-3和图6-4所示。
1.主目录的Setup和Teardown
首先,在图6-1所示界面中,在左侧窗格中,单击Calculator Test Cases目录,在右侧窗格中可以看见Suite Setup、Suite Teardown、Test Setup文本框中都有关键字,按住Ctrl键并单击可以进入相应的关键字编辑页。Suite Setup里调用Start Calculator关键字来启动计算器。Start Calculator关键字的定义如图6-5所示。
图6-3 英文版计算器的界面
图6-4 中文版计算器的界面
图6-5 Start Calculator关键字的定义
第1行中,打开计算器。
第2行中,等待一个标题是“Calculator”的窗口打开,中文版的标题是“计算器”,所以我们改一下。
第3行中,调用一个用户关键字Get Calculator Version,具体功能会在后面分析。
第4行中,设置一个用户关键字,通过菜单切换到科学计算器。英文版中,选择View→Scientific;中文版中,选择“查看”→“科学型”。这里我们不用改成中文,因为View Scientific是按键定义文件calculatorGUIMap.py中菜单变量MENUMAP里的按键。本章稍后会讲解这个关键字。
第5行中,等待一个标题是Calculator并且包含Degrees的窗口出现。中文版中的标题是“计算器”,窗口中相应的字符是“度”。
第6行中是一些注释。
第7行中,发送12345给计算器。
第8行中,等待计算器中出现12345,并且用BuiltIn库里的Run Keyword And Ignore Error关键字,让计算器即使出现错误,也继续执行下一步操作。这里把Win Wait关键字里的“Calculator”改成“计算器”。
第9行中,如果失败,就通过菜单关闭数字分组,因为数字分组打开后12345会显示成“12,345”。
第10行中,继续检查是否出现12345。
第11行中,单击Clear按钮。
对于图6-5中的第3行,按住Ctrl键并单击Get Calculator Version以查看这个关键字,其定义如图6-6所示。
·Send:表示发送键。
·Win Wait Active:表示AutoItLibrary的一个关键字,把鼠标指针放在这个关键字上面,同时按住Ctrl键,可以看到它的作用和使用方法。它用于等待一个指定标题(About Calculator)和内容(Version)的对话框出现。根据英文版修改中文版的计算器。
·Control Get Text:表示AutoItLibrary的一个关键字,用于获取指定对话框里某个控件的值。
·Control Click:表示AutoItLibrary的一个关键字,用于单击指定对话框里的某个按钮。
图6-6 Get Calculator Version关键字的定义
Run Keyword If、Set Variable If、Set Suite Variable等关键字来自Robot Framework自带的BuiltIn库。关键字的命名就采用自然语言,不用查看帮助文档,只看名字也能知道它是做什么的。
单击左上角的Settings<<按钮,返回一个用户自定义关键字Select Calculator Menu Item,其定义如图6-7所示。
根据传入的字符串单击相应的按钮。这里传入的是?View Scientific,在变量文件里对应的${MENUMAP}定义的值是VS,所以做的动作就是依次按Alt键,暂停1s,然后按V、S键,最后松开Alt键,这样就能把计算器切换到科学计算器。
Suite Teardown里的关键字Stop Calculator以及Test Setup里的关键字Clear Calculator比较简单,这里不赘述。
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任