分类归档 » Doraemon

质量管理平台

目 录 3.2接口用例场景组件 3.3 多接口用例的开发 3.2接口用例场景组件 在此之前,大家应该都已经开发完成了一个最简单的接口测试用例,但是之前的接口用例的期望结果是固定值,不能动态的去做对比,有很大局限性。下面开始介绍怎样通过场景组件来动态对测试结果做断言。(以下步骤的前提是你已经完成了3.1小结中的简单测试用例。)   1)         单一接口用例的断言组件 l   第一步:在eclipse中导入IATStepGroup,根据你自己的接口功能模块添加新的package包.本例中我添加的package名字:cn.gateside.iat.steps.demo   l   第二步:在新建的package下添加场景组件类。类名称建议以接口的名称+Steps作为你的场景组件类名称。本例中我添加的场景组件类名称为:UserInfoSteps.java   l   第三步:添加好场景组件后,开始添加场景组件方法。在UserInfoSteps.类中添加如下代码: @AssertStepMethodDesc(description=””,owner=””) publicvoid asserUserInfo(String parameterID,String expectResut,String actualResult) throws Exception { InterfaceStepParameter parameter=(InterfaceStepParameter)ParameterHelper.getInterfaceStepParameter(parameterID); JSONObject object=JSONObject.fromObject(actualResult); MysqlDBOperationService service=new MysqlDBOperationService(parameter.ConnectiongString); List<List<String>> resultSet= service.executeQuery(parameter.getValue(“announcerInfoSql”),parameter.getValue(“user”),parameter.getValue(“password”)); assertEquals(object.keys(), resultSet.size()-1,”!!!the announcer number from interface is different from the number from database!!!”); } 以上是一个最常用的断言场景组件的写法。接下来解释上述方法中的每一行。这里说到的每一行是指一行代码,请忽略换行,以及花括号。   H1:是断言方法的注解,包含两个参数description(方法功能描述),owner(方法的开发人员)   H2:场景组件方法定义,需要注意的是断言组件方法会有三个参数,分别表示这个方法中用到的数据的存储ID,期望结果,以及用例的实际结果。   H3:第三行是用来获取方法中用到的数据,根据parameterID从存储数据的xml文件中读取。此行可以照抄,如果没有用到数据可以不写此行。   H4:是将实际结果转换成Json对象,如果实际结果不是json字符串,请用相应的处理格式来处理。   H5,H6:两行是用来从数据库查询出期望的结果和实际结果做对比。对于H5行来说只有一个参数ConnectionString,在此是指JDBC链接字符串。H6行中三个参数,第一个只是要执行的sql语句,后面两个是访问数据库需要的用户名和密码。另外H6返回值是一个二维的list.resultSet.get(0)代表的是查询结果的column name.   H7:对实际结果以及查询到的期望结果做断言。   2)   断言场景组件的使用 完成自己的场景方法后,接下来介绍怎么使用。首先需要知道我们完成的场景方法的全名是什么。 l  场景方法全名:cn.gateside.iat.steps.demo.UserInfoSteps.asserUserInfo,也就是之前提到的pacakge.class.method l  现在来看怎么使用我们的场景方法,先打开你在excel中创建的用例,将AssertType的值改为Custom.然后修改AssertMethod的值为cn.gateside.iat.steps.demo.UserInfoSteps.asserUserInfo:Test01 l  到这一步的时候,很多人可能不明白AssertMethod的值里面【:Test01】的意思,这一段表示这个场景方法用到的数据在xml中的存储ID.这个ID也就是在你开发场景方法的时候的第一个参数parameterID. l  接下来看看,parameterID这个参数指定的数据是存放在哪里,对于Excel形式的用例,parameterID所指定的数据是存放在与Excel同名的xml文件里的。所以在我们示例中开发的场景方法用到的数据必须都放在xml中。 l  准备好数据后,就可以运行你的用例,注意如果只是修改了数据不需要重新执行GatCrteator.java生成用例。 3.3 多接口用例的开发 多接口组合的用例是一种更加普遍的试用场景,尤其是移动端的接口测试。因为移动端业务逻辑都在接口服务端实现,因此需要我们试用多个接口组合来完成一个业务逻辑的测试。接下来的我们来看看怎么样开发多接口组合的用例,在此假定你已经能够开发单一接口的用例,对框架的开发架构都已经熟悉。 1)  和单一接口用例的差别 存储形式:单一接口中,数据,用例都是存放在Excel文件中,一行为一个测试用例。多接口组合的用例,用例和数据分别单独存放在不同的xml文件里。 断言方式:单一接口的断言方式分为固定断言方式和自定义断言方式。固定断言方式包括相等断言和包含断言两种。自定义断言方式主要通过自己编写断言代码来完成。对于多接口组合用例来说断言方式都是自定义的,都需要自己开发代码来完成。 用例的组成:单一接口用例因为只有一个接口,因此只用Excel中的一行就能代表一个用例。对于多接口组合的用例来说,每一个用例都是由多个步骤组合而成,也就是说由多个Step方法组合完成。 2)  和单一接口用例的共同点: 用例数据:用例数据都是存放在xml中,而且存放数据的规则,xml格式,xml中标签的含义都是完全一致的。 用例的生成:都已通过执行GatCreator.java来完成。 3)  多接口用例的组成部分 用例描述文件:用例描述文件是一个以TestCase.xml结尾的xml文件,注意一定要以TestCase.xml结尾,这是多接口组合用例的标示,否则在执行GatCreator.java的时候将不能生成用例。下图就是一个示例性的用例描述文件。 一个用例描述文件,也就是一个TestCase.xml文件可以包含很多个测试用例,不再像单一接口用例限定一个excel sheet只能编写一个接口的用例。接下来我们解释一下用例描述文件中的标签。 l   <AllTestCases></AllTestCases>:每一个用例描述文件有且仅有一个这样的标签,用例相关的信息都要放在这个标签内。 l   <StepParametersFilePath></StepParametersFilePath>:上图中第一个红框内的标签,这个标签中的内容:标示的是组成用例的每一个Step方法使用的数据存放在哪个文件中。这个标签是对用例描述文件中Step方法数据存放文件的全局描述。另外这个标签也可以做为TestCase,Step等标签的属性来为单个TestCase或者单个Step定义自己专属的配置。在Step,TestCase都有这个属性的情况下,框架读取配置的优先级是Step的配置优先于TestCase,TestCase优先于全局配置,对于其他全局配置而言,这个优先级同样适用。对于全局配置标签而言,一个文件只能有一个。 l   <StepAssembly></StepAssembly>:上图红框中的第二个标签。这个标签也是一个全局配置标签。表示在这个用例描述文件里,所有用到的Step方法都在这个包里。这个全局配置也可以作为TestCase,Step的属性。注意这个标签的值最后的小点别忘记了。 l   <StepGroup></StepGroup>:上图红框中第三个标签。这个标签同样是一个全局配置标签。虽然叫StepGroup,其实代表的是在这个用例描述文件中,所有用到的Step方法都在这个类中。这个全局配置也可以作为TestCase,Step的属性。 l   <TestCase></TestCase>:上图红框中第四个标签.这个标签代表了一个用例。ID属性是他的唯一标示,因此不能重复,Name属性同样不能重复。它还有Step子标签,我们前面说过了,一个用例是多个Step组成的,因此一个用例可以有多个Step标签。 l   <Step></Step>:这个标签代表了一个用例的一个步骤。StepName:属性是一个StepMethod的名称,StepParameterID是这个StepMethod用到的数据在全局配置中提到的文件中的ID标示。当然如果你自己为Step设置了StepParametersFilePath这个属性,那么这个ID就是你自己设置的这个文件中的ID了。 l   最后总结一下:多接口用例是由多个自定义的方法组成,这个用例由那些方法组成,以及用到了那些数据这些信息最后会存放在一个用例描述文件中。当你编辑完一个用例描述文件后,你就可以使用GatCreator来生成具体的代码了。 数据文件:也就是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 …..

目 录 3.1接口用例开发 3   开始写用例 3.1接口用例开发 1)         准备工作 l  第一步从github(https://github.com/GeneralAutomationTesting/GAT2.0)上下载GAT2.0。 在获取的GAT2.0包里你会看到两个文件夹。如下图所示:   l  第二步从GAT2.0Demo包里找到IATStepGroup 并导入的eclipse.并确保导入后的项目没有引用错误。导入后的目录与【代码结构图】中的结构相似 2)         开始单接口用例开发 单一接口的用例的数据以及用例描述文件是存储在Excel文件中的。下面就详细解释一下Excel中各个字段的含义以及注意事项。   字段名称 字段说明 可选值/实例 ID 唯一即可 DomainName 接口URL的域名 http://api.demo.com Path 域名后参数前的部分 /service/uerlist ParameterName url的参数,列名以$开头 ExpectResult 接口的期望结果 AssertType 断言方式 Equal:和期望结果相等 Contains:包含期望结果 Custom:需要自定义场景组件 AssertMethod 断言方式为自定义情况下需要提供场景组件方法 packagename.classname.methodname:场景组件的参数ID SetupType Custom SetupContext 需要Setup情况下需要提供场景组件方法 packagename.classname.methodname:场景组件的参数ID TearDownType Custom TearDownContext packagename.classname.methodname:场景组件的参数ID 备注:空值必须以:$NULL代替,不能留空   l   第一步:在InterfaceAutomation->DataFiles->Excels目录下创建一个Excel文件。文件名称代表接口所属的模块,请起一个有意义的名字。 l   第二步:打开新创建的Excel文件,并把一个sheet的名字修改为接口的名字,注意一个sheet只能为一个接口写用例。Sheet名字请不要包含特殊字符等。 l   第三步:复制已经存在的excel文件中的各个列名,到新建的sheet中,并开始填写值。   图12 l   请注意一下几点: n   确保ID唯一,DomainName,Path等字段的值都正确。 n   如果接口没有参数请确保没有以$开头的列。 n   如果不想传某个参数,可以把该参数的值置成$EMP. n   Excel中的一行代表一个用例 n   如果需要添加描述性的列,列名请以#开头即可 n   黄色背景字段为默认字段,名称必须保持与图片中的一致。 n   绿色背景字段为接口参数,每增加一个参数在绿色字段增加一列即可。列名称为$+参数名称.如果没有参数请不要保留任何参数字段。 n   图片中可为空字段,在为空是请以$NULL代替 n   如果字段值为数字,请将单元格格式设置为字符串   l  第四步:完成以上步骤后,保存Excel文件。然后右击GatCreator.java运行。在运行之前请确保已经关闭了Excel文件,否则有可能出错。运行完成后就会生成相应的单元测试用例,如果在Eclipse中看不到,请刷新IATStepGroup项目。 3)         运行用例 到这步的时候你已经成功的完成了第一个用例,接下来是运行你的用例。 l   :在package [com.gateside.autotesting.generation.unittest]中找到excel文件名_sheet名称.java文件然后点击右键,run as Testng就可以