myAppointment OPA test case issue

Sent: Monday, 2 November, 2015 4:04 PM

Test case description:
在create appointment view中,定义了一个这样的元素:

<form:FormElement id="responsible"
label="{i18n>view.Appointment.employeeResponsible}">
<form:fields>
<Input id="responsibleText" value="{vm>/ResponsibleTxt}"
showValueHelp="true" valueHelpOnly="false"
liveChange="onEmployeeInputFieldChanged"
suggestionItemSelected="onEmployeeSuggestItemSelected"
valueHelpRequest="onF4Employee">
</Input>
</form:fields>
</form:FormElement>

我的test case是要测#responsibleText的suggestion功能,即根据输入,自动生成并显示suggestionItems,如图1:
clipboard1
图1

在OPA里通过waitFor()方法找到了#responsibleText控件,并触发了它的LiveChange事件,去调用NewAppointment.controllers.js中的onEmployeeInputFieldChanged方法。但是很奇怪的是,Jekins的report显示,onEmployeeInputFieldChanged方法中,带红底色部分的代码并没有运行(见图2),从而没有为#responsibleText 这个input生成suggestionItems。OPA运行结果如图3.

clipboard2
图2

clipboard3

图3

然后我就在chrome的里debug,发现其实浏览器是有跑图2的红底色代码的,但OPA frame里确实是没有可视的suggestionItems的。我尝试用写waitFor()方法去找suggestionItem所定义的类型(sap.ui.core.Item)的控件,也还是找不到,从而input的suggestionItemSelected事件也就无法继续写opa test case去测。

PS:
http://localhost:8080/cus.crm.mycalendar/test-resources/testsuite.opa.html?sap-language=EN&responderOn=true&testNumber=14,是本地访问这个testcase的URL.

solution

执行所有的test case是在浏览器地址栏里输入URL :http://localhost:8080/cus.crm.mycalendar/test-resources/testsuite.opa.html?sap-language=EN&responderOn=true;
如果不执行所有的test case,只执行指定的某一个,就是在上面你的URL后再加一个参数testNumber=xxx,它在OPA页面里是主窗口的每一行最前面test case的序号,也就是你的截图里的“1.”,比如
http://localhost:8080/cus.crm.mycalendar/test-resources/testsuite.opa.html?sap-language=EN&responderOn=true&testNumber=14 , 就是跑第14个test case(就是我现在有问题的这个case)
2. 括号里的三个参数的意义是:(arg1, arg2, arg3)
arg1——当前test case下,跑失败的子用例;
arg2——当前test case下,跑成功的子用例;
arg3——当前test case所包含的所有子用例的总数目。

就是说,每一个test case下面可以写子用例的意思是,其实就是一个分步骤的概念:比如我要测试点击一个button后会不会弹出一个dialog,这一整套动作是作为一个test case写的,但是需要分步骤来检测每一个控件的行为——首先找到button,写一条子用例语句来打印“find button AAA”,然后浏览器render出一个dialog,我们再写一个子用例来找dialog,写一条子用例语句来打印“find dialog BBB”。

clipboard4

在我机器上测试test case14的时候,我并没有执行到你图2里红底色的那些代码里:

Line 2120亿执行就会出错:

clipboard5

这里的this 并没有指向controller,所以不存在这个_setEmployee function:

clipboard6

你如果执行它,会跳到下面这个页面里:

clipboard7

把鼠标放到y上,就能看到详细的错误:

clipboard8

猜你喜欢

转载自blog.csdn.net/i042416/article/details/92808149