月份归档 » 2014 / 11

创建接口自动化任务 1 开打接口自动化专用的Jenkins网站http://172.23.237.169:8080/jenkins/ 2 点击新建,添加任务 l 输入Job名称(红圈位置) l 选择构建一个自由风格的软件项目(小红圈位置) l 最后点击OK 1 配置新任务 1)源码管理配置 l 源码管理方式选择Subversion l 添加IATTestProject源码地址,及本地目录名称(IAT/IATTestProject) l 添加Libs源码地址,及本地目录名称(IAT/Libs) l 添加DataFiles源码地址,及本地目录名称(IAT/DataFiles) l 添加IATStepGroup源码地址,及本地目录名称(IAT/IATStepGroup)   2) 构建配置 l 添加构建IATStepGroup步骤 点击增加构建步骤,选择Invoke Ant步骤,最后点击高级按钮 l 添加执行Testng用例构建步骤 点击增加构建步骤,选择Invoke Ant步骤,最后点击高级按钮 l 在Build File框中填入要执行的ant build 文件名称 3)构建后操作 点击增加构建后操作步骤,选择Publish TesgNG Result l 在TestNG XML report pattern 中输入上图中的字符即可 l 点击保存结束任务创建。 2 执行任务前准备: 1) 使用Gatrunner生IATTestProject 目录结构如下 2) 复制生成的testng.xml,并根据要执行的测试用例创建自己的tesgngxxx.xml文件 3) 复制build.xml文件生成自己的buildxxx.xml.生成自己的buildxxx.xml文件需要修改以下地方。(红圈位置) l 将红圈1中的内容替换为,你刚才创建的jenkins job名称 l 将红圈2中testng.xml替换为你刚才创建的testngxxx.xml l 保存文件,并上传到SVN 4) 修改IATTestProject下的gatConfig.properties 将rootDir的值修改为如上图所示,也就是将值留空   5) 修改IATStepGroup目录中的build文件 复制现有的build文件,并重命名为你自己的build文件,修改文件中一下内容。 l 将红圈1中的内容替换为,你刚才创建的jenkins job名称 l 将红圈2中的内容替换为,你刚才创建的jenkins job名称 l 保存文件,并上传到SVN   3 完成上述操作后,就可以在jenkins上运行创建的任务,并查看结果。 4 查看任务运行结果: 1) 在任务运行完成后,点击要查看的任务构建历史 2) 进入任务执行历史后,点击TestNGResults,即可看到如下图 3) 点击具体用例,还能看到测试用例失败的原因及日志。 4) 如果还想自动把测试用例的执行结果发出来,其实主要想办法把IATTestProject\test-output文件夹下的emailable-report.html的内容作为邮件发出来即可。如果要让jenkins发出来,可能需要你自己写插件才行。  

3.3 多接口用例的开发 多接口组合的用例是一种更加普遍的试用场景,尤其是移动端的接口测试。因为移动端业务逻辑都在接口服务端实现,因此需要我们试用多个接口组合来完成一个业务逻辑的测试。接下来的我们来看看怎么样开发多接口组合的用例,在此假定你已经能够开发单一接口的用例,对框架的开发架构都已经熟悉。 1)和单一接口用例的差别 存储形式:单一接口中,数据,用例都是存放在Excel文件中,一行为一个测试用例。多接口组合的用例,用例和数据分别单独存放在不同的xml文件里。 断言方式:单一接口的断言方式分为固定断言方式和自定义断言方式。固定断言方式包括相等断言和包含断言两种。自定义断言方式主要通过自己编写断言代码来完成。对于多接口组合用例来说断言方式都是自定义的,都需要自己开发代码来完成。 用例的组成:单一接口用例因为只有一个接口,因此只用Excel中的一行就能代表一个用例。对于多接口组合的用例来说,每一个用例都是由多个步骤组合而成,也就是说由多个Step方法组合完成。 2)和单一接口用例的共同点: 用例数据:用例数据都是存放在xml中,而且存放数据的规则,xml格式,xml中标签的含义都是完全一致的。 用例的生成:都已通过执行GatRunner来完成。 3)多接口用例的组成部分 用例描述文件: 用例描述文件是一个以TestCase.xml结尾的xml文件,注意一定要以TestCase.xml结尾,这是多接口组合用例的标示,否则在执行GatRunner的时候将不能生成用例。 下图就是一个示例性的用例描述文件。 一个用例描述文件,也就是一个TestCase.xml文件可以包含很多个测试用例,不再像单一接口用例限定一个excel sheet只能编写一个接口的用例。接下来我们解释一下用例描述文件中的标签。 :每一个用例描述文件有且仅有一个这样的标签,用例相关的信息都要放在这个标签内。 :上图中第一个红框内的标签,这个标签中的内容:标示的是组成用例的每一个Step方法使用的数据存放在哪个文件中。这个标签是对用例描述文件中Step方法数据存放文件的全局描述。另外这个标签也可以做为TestCase,Step等标签的属性来为单个TestCase或者单个Step定义自己专属的配置。在Step,TestCase都有这个属性的情况下,框架读取配置的优先级是Step的配置优先于TestCase,TestCase优先于全局配置,对于其他全局配置而言,这个优先级同样适用。对于全局配置标签而言,一个文件只能有一个。 :上图红框中的第二个标签。这个标签也是一个全局配置标签。表示在这个用例描述文件里,所有用到的Step方法都在这个包里。这个全局配置也可以作为TestCase,Step的属性。注意这个标签的值最后的小点别忘记了。 :上图红框中第三个标签。这个标签同样是一个全局配置标签。虽然叫StepGroup,其实代表的是在这个用例描述文件中,所有用到的Step方法都在这个类中。这个全局配置也可以作为TestCase,Step的属性。 :上图红框中第四个标签.这个标签代表了一个用例。ID属性是他的唯一标示,因此不能重复,Name属性同样不能重复。它还有Step子标签,我们前面说过了,一个用例是多个Step组成的,因此一个用例可以有多个Step标签。 :这个标签代表了一个用例的一个步骤。StepName:属性是一个StepMethod的名称,StepParameterID是这个StepMethod用到的数据在全局配置中提到的文件中的ID标示。当然如果你自己为Step设置了StepParametersFilePath这个属性,那么这个ID就是你自己设置的这个文件中的ID了。 最后总结一下:多接口用例是由多个自定义的方法组成,这个用例由那些方法组成,以及用到了那些数据这些信息最后会存放在一个用例描述文件中。当你编辑完一个用例描述文件后,你就可以使用Gatrunner来生成具体的代码到IATTestProject中了。 数据文件:也就是Parameter.xml文件这个文件要和TestCase.xml文件一样都放在开发架构中的DataFiles\Xmls文件夹下。文件的具体结构和单一接口中的Parameters.xml文件一致。在这里就不多说了。 代码的写法: public class DemoStep { @StepMethodDesc(description=””,owner=”tiande.zhang”) public void Step1(String parameterID) throws              Exception { InterfaceStepParameter parameter=(InterfaceStepParameter)ParameterHelper.getInterfaceStepParameter               (parameterID); WebConversation currentConversation=HttpUnitHelper.createConversation(); WebRequest currentReques t=HttpUnitHelper.createWebRequest(parameter.getValue(“url”),parameter.ge               tValue(“httpmethod”)); HashMap<String, String> urlParameters=parameter.getURLParametersMap(); if(urlParameters.size()!=0) { HttpUnitHelper.setParameters(currentRequest,urlParameters); } WebResponse response=currentConversation.getResponse(currentRequest); System.out.println(response.getText()); StepValuePool.createInstance().getValueDic().put(“doubiToken”,response.getText()); } @StepMethodDesc(description=””,owner=”tiande.zhang”) public void Step2(String parameterID) throws Exception { System.out.println(parameterID+StepValuePool.createInstance().getValueDic().get(“doubiToken”).toString()); } @AssertStepMethodDesc(description=””,owner=”tiande.zhang”) public void Step3(String parameterID,String expectResut,String actualResult) { SimpleLogger.logInfo(this.getClass(),actualResult); } 代码的整体写法和为单一接口写断言方法是一致的,都是写在IATStepGroup中。 Step方法都是无返回值的,而且只接受一个参数那就是parameterID.切记只有一个String型的参数,参数个数类型都不         能随意别更,否则会出错。 所有Step方法,断言方法都要加相应的注解,否则可能服务被调用。切记 总结:以上部分就是在业务无关的情况下,代码部分我们要注意的地方。 4)多接口组合用例用到的类,方法 在我们做多接口组合的用例的时候,搜索的事情都需要我们自己写代码完成。包括发送http请求,设置http请求参数          ,解析对比返回值等等。为了方便大家,框架本身提供了大部分的帮助类来帮助大家完成工作。当然你也可以自己写这           些类来完成工作。 …..