Phoenix自动化界面操作手册_第1页
Phoenix自动化界面操作手册_第2页
Phoenix自动化界面操作手册_第3页
Phoenix自动化界面操作手册_第4页
Phoenix自动化界面操作手册_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、  创建测试场景场景用于组织多个用例,执行时可以以1个用例为单位,即执行一个用例,也可以执行一个场景,即执行多个用例,执行的顺序按创建场景时添加的顺序。删除该场景时,会将该场景下的用例及数据一起删除。创建场景步骤:在首页点击场景管理 -> 新增场景 -> 输入场景名及功能说明 -> 提交即可2、  创建用例及数据(1)增加用例用例是用来组织测试数据,定位信息的(webUI),逻辑代码的。创建用例步骤:首页 -> 用例管理 -> 选择所属场景 -> 输入用例名及用例功能说明 -> 选择用例类型 -> 选择消息发送状态 -&g

2、t; 提交即可。对应的用例类型及消息发送类型的说明,如图:(2)用例列表页面管理操作中,可增加业务逻辑代码,添加定位信息,数据等。(3)用例执行体增加在phoenix_develop工程下开发和调试用例,调试通过后,全部复制,粘贴到用例的执行体中。如有以下用例代码:package org.phoenix.cases;import java.util.HashMap;import java.util.LinkedList;import java.util.Map.Entry;import org.phoenix.enums.LocatorType;import org.phoenix.model

3、.CaseLogBean;import org.phoenix.model.InterfaceBatchDataBean;import org.phoenix.model.LocatorBean;import org.phoenix.model.UnitLogBean;import xy.ActionProxy;/* * 浏览器驱动测试类: * 通用方法API:monAPI(). * webUI/mobileUI用例API:phoenix.webAPI(). * 接口测试用例API:erfaceAPI(). * androidappAPI:p

4、hoenix.androidAPI(). * IOSappAPI:phoenix.iosAPI(). * svnClientAPI:phoenix.svnClient(). * ftpClientAPI:phoenix.ftpClient(). * socketClientAPI:phoenix.telnetClient(). * . * author mengfeiyang */public class TestBrowserDriver extends ActionProxyprivate static String caseName = "浏览器驱动测试用例"publ

5、ic TestBrowserDriver() Overridepublic LinkedList<UnitLogBean> run(CaseLogBean caseLogBean) init(caseLogBean);/必须有这一步/phoenix.webAPI().setFirefoxExePath("D:Program Files (x86)Mozilla Firefoxfirefox.exe");/使用Firefox浏览器时,必须添加/phoenix.webAPI().setChromeDriverExePath("C:Program Files

6、 (x86)GoogleChromeApplicationchromedriver64.exe");/使用chrome浏览器时,必须添加,且chromedriver64.exe必须和chrome.exe在同一目录下HashMap<InterfaceBatchDataBean, HashMap<String, String>> datas = monAPI().loadWebCaseDatas(caseName);/加载数据库测试数据方法HashMap<String,LocatorBean> locators = monAPI().addLocato

7、r(caseName);/加载定位信息的方法for(Entry<InterfaceBatchDataBean, HashMap<String, String>> es : datas.entrySet()InterfaceBatchDataBean batchData = es.getKey();batchData.getExpectData();/这批数据的执行结果期望值HashMap<String, String> dataBlocks = es.getValue();String phoenixframe = dataBlocks.get("

8、输入数据1");/在数据库中此数据的keyphoenix.webAPI().openNewWindowByFirefox("");/phoenix.webAPI().openNewWindowByChrome("");/phoenix.webAPI().openNewWindowByIE("");/phoenix.webAPI().openNewWindowByHtmlUnit("", true, BrowserVersion.INTERNET_EXPLORER);/phoenix.webAPI().op

9、enNewWindowByPhantomJs("");phoenix.webAPI().webElement("/*id="kw"",LocatorType.XPATH).setText(phoenixframe);/引用数据phoenix.webAPI().webElement(locators.get("btnLocator").getLocatorData().click();/使用数据中的定位信息,等同于phoenix.webAPI().webElement("btnLocator").

10、click();String r = phoenix.webAPI().webElement("/*id="su"", LocatorType.XPATH).getAttribute("value");/数据库中的数据可以与页面不变的数据混合使用phoenix.checkPoint().checkIsEqual(r, "百度一下");/调用检查点,检查结果会在日志中统计monAPI().addLog("我是自定义的");/可以手动插入一句日志,该日志会在最后的日志记录中体现phoenix.web

11、API().sleep(1000);phoenix.webAPI().closeWindow();return getUnitLog();public static void main(String args) LinkedList<UnitLogBean> ll = new TestBrowserDriver().run(new CaseLogBean();for(UnitLogBean l : ll)System.out.println(l.getContent();全部复制,并粘贴到控制台后如图:过程如图:(4)接口测试数据编辑批量导入,Excel模版如下:用例列表界面选择接

12、口用例:点击数据连接进入数据编辑界面:支持两种方式为接口用例增加批次数据:4.1 手动输入>>1,点击上图的添加数据批次按钮:>>2、增加完成后如界面:>>3、点击“修改添加参数”链接,并点击新增参数:>>4、比如我们现在测试这样的一个url:http:/xxx/x.action?p1=d1&p2=d2 ,添加参数的时候,这样添加:提交后如:Tips:此时点击按钮,则会导出一个模版,此模版用于下面的第二种方式。4.2 批量导入通过excel准备数据,然后导入的数据库的指定用例下,步骤如下:>>1、在数据列表界面,点击

13、,界面如下:相关错误信息提示:导入成功后,将跳转到指定用例数据的列表页面。(5)数据导出数据导出步骤:1、  点击按钮,点击时会有“是否确认导出”的提示,若点击取消,则取消导出。若点击确认,则会有“正在处理请求.”的提示,稍后将会弹出:2、  点击以上提示框中的链接地址,即可将数据表下载到本地。每次的数据表都是即时生成的,若不下载,点击确定按钮后,会将服务器上的原副本删除,避免垃圾文件的产生。下载到本地的数据表如下:在代码中使用批量数据的方式:package org.phoenix.cases.webservice;import java.io.IOExcepti

14、on;import java.util.LinkedHashMap;import java.util.LinkedList;import java.util.List;import java.util.Map.Entry;import org.phoenix.model.CaseLogBean;import org.phoenix.model.InterfaceBatchDataBean;import org.phoenix.model.InterfaceDataBean;import org.phoenix.model.UnitLogBean;import xy

15、.ActionProxy;import com.meterware.httpunit.WebResponse;/* * 使用phoenix做接口测试的案例,包括两个:<br> * 1、使用多批数据对一个接口url做测试<br> * 2、不使用多批数据<br> * 若对wsdl形式的接口做测试,则wsdl的文件需要以Dom方式解析。使用WebResponse中的Dom即可。 * author mengfeiyang * */public class ContactJieKou extends ActionProxyprivate static String c

16、aseName = "接口测试用例"public ContactJieKou() /Test /使用Jenkins执行此用例的方式,此Test为:org.testng.annotations.TestOverridepublic LinkedList<UnitLogBean> run(CaseLogBean caseLogBean) init(caseLogBean);LinkedHashMap<InterfaceBatchDataBean, List<InterfaceDataBean>> datas = monAPI().loadIn

17、terfaceDatas(caseName);for(Entry<InterfaceBatchDataBean, List<InterfaceDataBean>> entry : datas.entrySet()InterfaceBatchDataBean iBatchBean = entry.getKey();List<InterfaceDataBean> iDatas = entry.getValue();System.out.println("-数据批次:"+iBatchBean.getId()+" 期望值:"+

18、iBatchBean.getExpectData();String url ="for(InterfaceDataBean iData : iDatas)url += iData.getDataName()+"="+iData.getDataContent()+"&"url = url.substring(0, url.length()-1);WebResponse resp = erfaceAPI().getResponseByGet(url);try /如果接口返回的数据是json格式,则可以通过jsonPat

19、h取出实际值,如果不是json则可以自己通过自定义方式如正则表达式等。String actual = erfaceAPI().getJSONValue(resp.getText(), "JSON.data0.dvd.point3.title");/String actual = resp.getElementWithID("su").getText();根据页面中的id,tagName,XPath,Dom等方式取到实际值String r = phoenix.checkPoint().checkIsEqual(actual, iBat

20、chBean.getExpectData();/检查点结果入库if(r = null)System.out.println("-测试通过-"); catch (IOException e) e.printStackTrace();return getUnitLog();(6)web用例数据编辑在用例列表界面,点击对应用例的数据链接,即可打开数据编辑界面:在用例代码中的使用方式:package org.phoenix.cases;import java.util.HashMap;import java.util.LinkedList;import java.util.Map.

21、Entry;import org.phoenix.action.ActionProxy;import org.phoenix.model.CaseLogBean;import org.phoenix.model.InterfaceBatchDataBean;import org.phoenix.model.UnitLogBean;/* * 使用数据库中的数据进行参数化 * author mengfeiyang * */public class TestPhoenixCaseUseDBData extends ActionProxyprivate static String caseName =

22、 "消息测试用例"public TestPhoenixCaseUseDBData() Overridepublic LinkedList<UnitLogBean> run(CaseLogBean caseLogBean) init(caseName,caseLogBean);/*加载数据库中保存的多个批次数据的方法*/HashMap<InterfaceBatchDataBean, HashMap<String, String>> datas = monAPI().loadWebCaseDatas(caseName);for(Entry&l

23、t;InterfaceBatchDataBean, HashMap<String, String>> data : datas.entrySet()/获取当前批次的期望值及当前批次执行的目标或说明String expect = data.getKey().getExpectData();String remark = data.getKey().getRemark();HashMap<String, String> dataBlocks = data.getValue();/获取数据,并根据数据的名称说明数据的内容phoenix.webAPI().openNewW

24、indowByIE(dataBlocks.get("输入数据3");phoenix.webAPI().webElement("set").setText("1111111");String s = phoenix.webAPI().webElement("click").getAttrValue(dataBlocks.get("输入数据2");System.out.println(s);phoenix.checkPoint().checkIsEqual(dataBlocks.get("

25、输入数据2"), s);phoenix.webAPI().webElement("click").click();phoenix.checkPoint().checkIsFalse(s!=null);phoenix.webAPI().sleep(Long.parseLong(dataBlocks.get("输入数据1");phoenix.webAPI().closeWindow();return getUnitLog();在启动时,init()方法中的caseName即为用例的名称,平台根据用例的名称加载该用例下的数据,该用例的名称不必是当前用

26、例名称或id。基于这种方式,可以做到数据的公用,即将该用例的数据可以在其他用例中使用。若有多个数据的批次,可参考:(5)接口测试数据编辑。也可以使用下面这种方式进行参数化,两种方式可以混合使用:(7)web用例定位信息编辑用例在初始化时,即:,会自动将该用例下的数据及定位信息加载。加载之后,就可以在用例脚本中使用了,如图:同(6)web用例数据编辑,定位信息也可以在多个不同的用例之间共用。(8) 接口测试的代理设置对cookie,proxy的设置方法实例:package org.phoenix.cases.webservice;import java.util.Arrays;import ja

27、va.util.HashMap;import java.util.LinkedList;import mons.io.IOUtils;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.phoenix.model.CaseLogBean;import org.phoenix.model.UnitLogBean;import xy.ActionProxy;/* * 使用phoenix做接口测试的案例,:<br> * 设置代理<

28、br> * 若对wsdl形式的接口做测试,则wsdl的文件需要以Dom方式解析。使用WebResponse中的Dom即可。 * author mengfeiyang * */public class HostTestByHttpClient extends ActionProxypublic HostTestByHttpClient() Overridepublic LinkedList<UnitLogBean> run(CaseLogBean caseLogBean) init(caseLogBean);HashMap<String,String> header

29、s = new HashMap<String,String>();headers.put("Accept-Language", "Accept-Language: en,zh");headers.put("Accept-Charset", "Accept-Charset: iso-8859-1");HttpClient httpClient = erfaceAPI().getHttpClientWithProxy("13", 80, &qu

30、ot;", "");HttpResponse response = erfaceAPI().getResponseByHttpClient(httpClient, "", "get", headers);try System.out.println(Arrays.toString(response.getAllHeaders();System.out.println(IOUtils.toString(response.getEntity().getContent(); catch (Exception

31、e) / TODO Auto-generated catch blocke.printStackTrace();return getUnitLog();public static void main(String args) HostTestByHttpClient yw = new HostTestByHttpClient();LinkedList<UnitLogBean> ll = yw.run(new CaseLogBean();for(UnitLogBean l : ll)System.out.println(l.getContent();(9)执行过程中操作其他数据库更多

32、实例请见phoenix_develop工程的:org.phoenix.cases.extendbpool包。package org.phoenix.cases.extendbpool;import java.sql.ResultSet;import java.util.LinkedList;import org.phoenix.action.WebElementActionProxy;import org.phoenix.extend.druid.DruidUtil;import org.phoenix.model.CaseLogBean;import org.phoenix.model.Un

33、itLogBean;/* * 使用phoenix做接口测试的案例<br> * author mengfeiyang * */public class DruidDemo extends WebElementActionProxyprivate static String caseName = "接口测试用例"public DruidDemo() Overridepublic LinkedList<UnitLogBean> run(CaseLogBean arg0) init(caseName,arg0); try DruidUtil druid =

34、new DruidUtil(); druid.config("jdbc:mysql:/localhost:3306/ykstimer?useUnicode=true&characterEncoding=utf-8", "root", "root");ResultSet rs = druid.getQueryResultSet("select * from t_user where id = '8'");while(rs.next()int level = rs.getInt(2);/根据列编

35、号String name = rs.getString("name");/根据列名String password = rs.getString("password");/根据列名 webProxy.checkPoint().checkIsEqual(password, "mfy"); webProxy.checkPoint().checkIsEqual(name, "mfy");System.out.println(level +" "+name+" "+password);

36、 catch (Exception e) e.printStackTrace(); return getUnitLog();3、  业务树形图通过此关系图,可以直观的看到业务用例,测试场景以及测试任务三者之间的关系,并且也可以直观的看到每个任务的执行状态。通过此树形图也可以直接编辑场景信息和用例,任务信息,免去了查询编辑的过程。4、  任务分配(1)任务增加增加任务步骤:首先需要确认已经添加了执行机(执行机管理菜单中可查看)。在首页点击任务分配 -> 添加任务,任务参数如下图:(2)任务列表任务列表的功能选项说明如下:5、  执行机状态6、  执行机管理(1)执行机增加(2)  执行机列表7、  日志查看(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论