Shake with your right hand but hold a rock in your left.
前情介绍:
练习环境配置
实例1(UI自动化-百度搜索)
实例2(有效登录)
测试需求:
在登录界面设计测试用例的时候,除了最基本的一个用正确的用户名和密码登录以外,一般还会设计几个无效登录的情况,比如:
- 错误的用户名和正确的密码
- 正确的用户名和错误的密码
- 错误的用户名和错误的密码
以上的情况都是为了验证系统对于无效登录时的异常捕获情况。从实际项目经验出发,开发人员在实现需求的时候,有效的用例基本能够顺利执行,往往是无效的用例方面会找到系统里面的bug,这和开发人员通常没有太多的时间去考虑异常处理是相关的。
测试设计:
写出对应的无效登录的Testcase集(单独写登录的测试用例的请参见实例2(登录)),如下图:
聪明的朋友一定会想到在以上6个测试用例中会发现其实都是在做同一个操作,不同的只是输入的用户名和密码不一样,这时会想到提取一个公用的模块出来实现这些重复的步骤,用数据驱动的模式来实现这个测试需求。
测试实现:
1 创建一个新的测试用例集OAInValidLoginTests,右键点击选取公用的New User keyword,取名Login with invalid credentials should fail
2 点击页面上出现的User Keyword文件会发现其界面和之前的Testcase是一致的。
步骤还是遵循正常登录时候的步骤,只是在验证点上面需要做异常登录的验证。
3 为实现数据驱动,在User Keyword文件中加上参数化,点击[Settings]->[Arguments],在Arguments处写上需要参数化的两个变量 username和password
4 创建对应的6个Test Cases,用图形方式比较麻烦,直接用Text的方式来实现更方便,切换到 Text Edit窗口,在Test Cases部分写入以下的代码:
*** Test Cases *** USERNAME PASSWORD
Invalid Username invalid ${VALID PASSWORD}
Invalid Password ${VALID USERNAME} invalid
Invalid Both invalid invalid
Empty Username ${EMPTY} ${VALID PASSWORD}
Empty Password ${VALID USERNAME} ${EMPTY}
Empty Both ${EMPTY} ${EMPTY}
你会发现在左边的树形界面上出现了对应的6个Testcase,点击进去后Edit界面下出现类似于下图的:
invalid user.png因为在这里又定义了一个变量${VALID PASSWORD}
5 变量的定义是在User Keyword中会发现有变化的值可以写为变量,变量的定义是在Testcase上右键点击New Scalar(为什么不直接取名字叫New Variable呢。。真是任性),输入变量的名称(Name)和对应的值(Value)
此时我们设计了3个变量,${VALID USERNAME},${VALID PASSWORD},${SERVER URL}
6 在OAInValidLoginTests(Test Case)中的Test Template中填写刚才创建的Login with invalid credentials should fail 文件。
最终的robot代码如下:
*** Settings ***
Test Template Login with invalid credentials should fail
Library Selenium2Library
*** Variables ***
${SERVER URL} http://localhost/smeoa/index.php?m=login&a=index # this is the comment for server URL
${VALID USERNAME} admin
${VALID PASSWORD} admin
*** Test Cases *** USERNAME PASSWORD
Invalid Username invalid ${VALID PASSWORD}
Invalid Password ${VALID USERNAME} invalid
Invalid Both invalid invalid
Empty Username ${EMPTY} ${VALID PASSWORD}
Empty Password ${VALID USERNAME} ${EMPTY}
Empty Both ${EMPTY} ${EMPTY}
*** Keywords ***
Login with invalid credentials should fail
[Arguments] ${username} ${password}
open browser ${SERVER URL} chrome
Input text id = emp_no ${username}
Input text id = password ${password}
click button xpath = //input[@value='登录']
sleep 2
wait until page contains element xpath = //input[@value='登录'] 20 error
close browser
CC先生的小黑板
1 变量的形式
${变量名}
2 变量的设置
Test case右键单击New Scalar
Settings里的Arguments中直接添加,用‘|’ 分割
3 模板的定制
新建类似于Test Case的文件,然后在Settings里面的Test Template中添加文件名
4 数据驱动
代码里面在Test case 部分直接填写
网友评论