接口自动化框架设计

先说说为什么设计接口自动化框架,框架这种东西一写就停不下来,因为你会发现有了框架之后测试就简单多了,越写越想要完美,简单到一个excel文件就可以跑完所有接口。没错,就一个excel文件,可能我比较懒吧,这样一劳永逸的东西何乐不为。下面简单介绍这个框架:

1.框架设计介绍

httpautotest使用的是java+testing+maven搭建的数据驱动自动化框架。Testng可用可以不用。这是一个为方便接口自动化测试的框架,接口数据从excel读取,数据设计开放性比较高,用户可根据测试需要,设置接口的运行环境,运行的组合等。

框架运行数据逻辑是一次读取一个excel文件,一个sheet为一个组合,组合可设一个接口多种参数,也可设多个接口,这里不做限制,只要是一个接口的完整数据都可以运行,sheet内的接口会一一读取。还可以设置带业务流程的接口组合,支持设置不同接口之间的数据关联,也就是参数化。

为方便接口数据的管理,域名和公共的请求头或参数都可以单独保存到sheet,需要修改的时候就不用一个个接口改数据了,注意sheet名称固定为“环境”、“请求头”、“公共参数”,以防错读取为接口。当然这些可设置可不设置,接口的sheet名称不限制。

做接口自动化离不开登录的cookie或session的关联,这里做的比较人性化的一点是自动关联了cookie,不需要再设置,当然前提是第一个调用登录的接口获取cookie,一定得是第一个。你可能回想有几个不需要cookie的接口我可以放前面调用,需要cookie了我再调登录接口,注意你第一个调的接口虽然不需要cookie,但是它的结果数据是带他自己的cookie的,我会获取到他的cookie做为之后的接口cookie。当然我可以让用户设置在哪个地方取cookie,但不如第一个接口就登录来的痛快。

框架支持设置检查点,会在请求结果中检查是否与设置的一致。

框架的最后生成了接口运行日志和运行结果的html,结果包含统计接口成功失败数据和接口请求的详细数据,详情按组合展示了接口名、路径、参数、请求结果、检查点等。如果有需要,可以把结果自动发送邮件,这个功能在UI自动化的时候就写好了,这里直接用之前的方法。

哦,还有对testng的使用,把数据处理成@DataProvider能用的objec,只需要一个@test,把所有接口都跑完。其实这个框架不使用testng会更好,因为我每个接口的方法不是独立的,不像UI自动化的测试用例一样每个功能有一个@Test,他的调用接口方法只有一个,所有的接口数据循环调用,且是分组合的记录结果,testng也能循环,但是只能一股脑把所有数据跑完了,分不清组合,日志也放一个文件,看起来费劲。

 

 

2.框架使用介绍

2.1 excel设置

Excel的单元格只用到AB两格,第一列为名,第二列为值,其余可随意填,但是不作为框架数据。

基本设置的sheet名称固定为“环境”、“请求头”、“公共参数”,可设置可不设置。当接口数据的sheet名称后添加“N”时,表示这个sheet不运行

Excel格式为.xls,java的jxj值支持.xls

例:

 

 

2.2、环境

       格式:环境=域名

                Method=请求方法

请求方法可填项:

jsonPost-json方式的post请求;

post-post请求;

get-get请求;

postOfFile-上传文件的post请求。

                                  

例:

接口自动化框架设计_第1张图片

 

2.3、公共参数

       格式:参数名=参数值

       参数值可进行参数化,取值格式${参数名}

例:

接口自动化框架设计_第2张图片

 

2.4、请求头

       格式:请求头名=请求头值

son格式的请求需要设置Content-Type=application/json,我在方法例已经加入了,所以要调用jsonPost的时候不需要再设置。

postOfFile请求上传文件需要设置Content-Type=multipart/form-data,我也在方法例已经加入了,所以要调用postOfFile的时候不需要再设置。

例:

 

2.5、接口

       1、接口之间空一行隔开

       2、固定参数:httpname-接口名称;url-接口路径;check-检查点;method-请求方法;httpheader-请求头;parameterization-参数化提取值

必填的参数是httpname和url。

2.6、参数使用介绍

url是去除环境里面的前置数据之后剩余的部分,如果填写完整的路径的话就覆盖掉前置数据;

method、httpheader设置后就不再使用默认的设置,直接覆盖掉。请求头多个用;隔开;

parameterization是从请求结果提取的值,格式为:调用的参数名=正则表达式,多个值用空格隔开,其他接口使用该值方法为${调用的参数名};

check是检查点,个用;隔开;

isRun判断是否运行这个接口,设置值为“N”,表示不运行,其他任何值都会运行;

其他的参数就是接口的请求参数。

例:

接口自动化框架设计_第3张图片

 

2.7、运行结果报告

接口自动化框架设计_第4张图片

 

2.8、最后可以集成到jenkins中,设置好测试数据,发布一次即进行一次接口自动化测试。

注:截图的手机号是我瞎写的,不用去骚扰别人哦,代码我后面再更新。

你可能感兴趣的:(测试开发)