1. 我们重新Record一个脚本,并且命名为ActionA。
2. 前面所有步骤都一样,在Flight Confirmation网页中,我们选择BACK TO FLIGHTS,回到Flight Finder网页,之后停止录制。
3. 以上脚本包括了2个业务流程:登录与订票,所以我们将整个测试流程分成2个Action:选择第二个动作开始的网页:Find a Flight:Mercury网页,并且选择右键菜单Action->Split,在弹出的Split Action对话框中分别命名2个Action为Sign_in和FlightOrder,并且Description字段分别输入Enters user name and password to sign in和Chooses and purchases a flight,点击OK按钮关闭Split Action对话框,这时Keuword View中会列出2个Action。选择菜单View->Expand All检查每个Action内容,注意FlightOrder这个Action的开始与结束都是Find a Flight:Mercury网页。
4. 接下来我们录制一个新的Action。回到Mercury Tours首页,让这个测试脚本开始并结束于同一页面:选择Insert->Insert Call to New Action菜单,Name输入ReturnHome,并选取At the end of test单选按钮,点击OK按钮关闭对话框。
5. 开启浏览器并浏览网址:http://newtours.demoaut.com,选择QTP菜单Automation>Record and Run Settings,打开Record and Run Settings对话框,选择单选按钮Record and run test on any open browser。
6. 点击Record按钮开始录制,在IE中选择左边目录区的Home按钮回到Mercury Tours首页,关闭浏览器,然后停止录制。
7. 恢复Record and Run Settings里面的Open the following address when a record or run session begins单选按钮。
8. 保存脚本并执行,观察测试结果。
9. 至此,我们的第一个脚本已经完成,目前第一个脚本包括了三个Action,并且每个Action重复一次。下面我们想创建一个新的脚本,并且使得前一个脚本的Sigh_in和ReturnHome脚本各执行一次,而FlightOrder脚本执行多次,这里我们很自然的想到需要参数化第二个Action也就是FlightOrder。
10. 我们建立一个新的Test,取名叫ActionB。
11. 我们选择菜单Insert->Call to Existing Action,打开Select Action对话框,从ActionA中选择Sign_In这个Action,注意选择At the end of the test。
12. 依照同样的步骤我们插入ReturnHome这个Action。
13. 删除原来自动生成的Action。
14. 选择Insert->Call to Copy of Action,打开Select Action对话框,选择测试脚本ActionA中的FlightOrder这个Action,同样选择At the end of the test。
15. Keyword View中调整各个Action的调用顺序。
16. 修改Copy of FlightOrder这个Action使之参数化:我们修改toPort为Parameter Name是ArrivalCity,Location in Data Table为Current action sheet(local)。由于同一名旅客同一时间到达2个不同地点是不合理的,所以我们对出发和到达日期同样做参数化。我们这里修改ArrivalCity第二列为Portland,在departure和arrival(分别表示出发月份与到达月份)第二列中输入October。
17. 设定以数据表中所有数据重复执行动作:我们回到Test Flow,在Copy of FlightOrder这个Action中选择右键菜单Action Call Properties,打开Action Call Properties对话框,选择Run on all rows。
18. 保存、执行并分析脚本,在Test Results中可以看到Copy of FilghtOrder被重复执行了二次。