接口自动化测试怎么测的(自动化接口测试)

接口自动化测试怎么测的(自动化接口测试)(1)

本人推荐使用idea编译器,不建议使用eclipse

以下2种依赖,自行选择一种

1、使用gradle添加依赖

【注:】需要在build.gradle添加jcenter()仓库

compile 'com.circlq:http-api:1.2.0'

2、使用pom文件添加依赖

<dependency> <groupId>com.circlq</groupId> <artifactId>http-api</artifactId> <version>1.2.0</version> </dependency>

使用pom依赖会有java版本问题,这边截图两张自己看下

接口自动化测试怎么测的(自动化接口测试)(2)

接口自动化测试怎么测的(自动化接口测试)(3)

下面开始如何实现

只需要简单的2步骤就能实现请求。

定义接口

//@DealAll @DealClass(HttpDealMethodImpl.class) @NetServiceClass("") public interface NetService { /** * get的简单请求 */ @GET("http://api.sdwhcn.com:5056/v1/temple") String get(@Query("page")int page ,@Query("limit")int limit ,@Query("recommend")String recommend); /** * get请求(URL中带有参数) */ @GET("http://api.sdwhcn.com:5056/{version}/temple") String get(@Path("version") String version, @Query("page")int page ,@Query("limit")int limit ,@Query("recommend")String recommend); /** * 表单提交 */ @POST("http://a.szy.com:4480/SignManageServer/sign/appHandle") String postForm(@Field("reqcode") String reqcode); /** * json提交 */ @POST("http://public.api.fashionworldcn.com/api/my/login") String postJson(@Param("mobile") String mobile, @Param("password") String password); /** * json 整串提交 */ @POST("http://public.api.fashionworldcn.com/api/my/login") String postJson(@Body String json); /** * json 实体类提交 */ @POST("http://public.api.fashionworldcn.com/api/my/login") String postJson(@Body LoginBuild json); /** * put 提交 */ @PUT("http://api.sdwhcn.com:5056/v1/member") String put(@Header("Authorization") String header, @Query("nickname") String nickname,@Query("signature") String signature,@Query("area") String area); /** * delete 提交 */ @DELETE("http://api.sdwhcn.com:5056/v1/member_collect_article/{id}") String delete(@Header("Authorization") String header, @Path("id") String id); /** * 文件下载 * 【注意】 文件下载的传参比较特殊,@Param 的key是按照服务端的字段来填写的, * 而文件下载不需要,所以@Param 的keykey是固定的, * filepath 代表文件路径,必填 * filename 代表文件名称,如果下载没带后缀,可自行加上后缀。 */ @DOWNLOAD("https://ztjyupdate.ztjy61.com/333897c77ec9a86605006679c7a4b418-ZTJY") void download(@Param("filepath") String filepath, @Param("filename") String filename, ProgressCallBack callBack); /** * 单张图片上传 *【注意】 @Param 的key 跟文件下载一样是固定写法 * @param filepath 代表文件路径,必填 * @param filekey 代表文件key,必填 * @param filename 代表文件名称 选填 */ @UPLOAD("http://api.sdwhcn.com:5056/v1/member/avatar") @Headers("Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjY4MDFmZjE1NTdlNWJhMzkzY2RlM2U0NjRiMGM0MzQ3MDkwNWYzMDYwZTZhZDFkOTQ4NTIyY2I3NDI2YjY0ZDFmODBiOWJkODY0YmEyM2UxIn0.eyJhdWQiOiIyIiwianRpIjoiNjgwMWZmMTU1N2U1YmEzOTNjZGUzZTQ2NGIwYzQzNDcwOTA1ZjMwNjBlNmFkMWQ5NDg1MjJjYjc0MjZiNjRkMWY4MGI5YmQ4NjRiYTIzZTEiLCJpYXQiOjE1NjEzNjI2ODcsIm5iZiI6MTU2MTM2MjY4NywiZXhwIjoxNTYxNDQ5MDg3LCJzdWIiOiIxIiwic2NvcGVzIjpbIioiXX0.RXUUxeLvYkkk1V-pmu-120N5JejjaDmTfG0zO0Zu3lMc5OChjlSvDiKm2jW6geCIp2gZeOrkC4HBNpSngjKue_v1l1UyyYudOofTZV3DUlF-hwhhwMJ2RKxp6yq2ecGfxCcg3ZED1dp0dAjmqmNCGUZViykQctSQC7FI3KXQeL-96wQj6G9YnN0n2sVOkeH2m1AYR2YjkXFW3C-lMujiqbfoH0i_DyRWqmvnH4IS67L8Ec0dWBNgWbDWyrO6Za6z9Im6VHfeqVkVYbvFdKrN8mtNuQQ0oioG_6vvuLE9zV-p2YT1t_WogqieFJHb9C6t9QZCqDopU7QBKiczoSk72tMffL0j_Byn1TlG7TlN0nvtnBB1kScz6tI6SvlkwgPOvHneBX-CHiDHPAlS_GOsnh1j5hVn1eRMbPS728sQpsTlVJ4WOpDP9AO1u4JG2ViU-4gohtpN5Lkc7FFbz30MSpi3aQQxXRjHslA--4Hbc-fqD1TjqgUyNfF4xK_paSUgihHwygIqNUeI6MuCltKKJCUR4eeNXItXPl9_GxSsWPYpetIw-0yFHwdrTWvr4fmy-gdteNrAtOv6DwDvGsgw52vnqoX8Sev_yWg9FBGKnFcRLIyMfkw9_7UQEn0-P9v0kqLxf63xk3QnGtdlhZNLA8l3OapCpHkYeZgcEX9UQFU") void upload(@Param("filepath") String filepath, @Param("filekey") String filekey , @Param("filename") String filename, ProgressCallBack callBack); /** * 多图上传 * 【注意】 @Param 的key 跟文件下载一样是固定写法 * @param filepath 代表文件路径,必填 * @param filekey 代表文件key,必填 * @param filename 代表文件名称 选填 * @param callBack */ @UPLOAD("http://api.sdwhcn.com:5056/v1/member/avatar") @Headers("Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjY4MDFmZjE1NTdlNWJhMzkzY2RlM2U0NjRiMGM0MzQ3MDkwNWYzMDYwZTZhZDFkOTQ4NTIyY2I3NDI2YjY0ZDFmODBiOWJkODY0YmEyM2UxIn0.eyJhdWQiOiIyIiwianRpIjoiNjgwMWZmMTU1N2U1YmEzOTNjZGUzZTQ2NGIwYzQzNDcwOTA1ZjMwNjBlNmFkMWQ5NDg1MjJjYjc0MjZiNjRkMWY4MGI5YmQ4NjRiYTIzZTEiLCJpYXQiOjE1NjEzNjI2ODcsIm5iZiI6MTU2MTM2MjY4NywiZXhwIjoxNTYxNDQ5MDg3LCJzdWIiOiIxIiwic2NvcGVzIjpbIioiXX0.RXUUxeLvYkkk1V-pmu-120N5JejjaDmTfG0zO0Zu3lMc5OChjlSvDiKm2jW6geCIp2gZeOrkC4HBNpSngjKue_v1l1UyyYudOofTZV3DUlF-hwhhwMJ2RKxp6yq2ecGfxCcg3ZED1dp0dAjmqmNCGUZViykQctSQC7FI3KXQeL-96wQj6G9YnN0n2sVOkeH2m1AYR2YjkXFW3C-lMujiqbfoH0i_DyRWqmvnH4IS67L8Ec0dWBNgWbDWyrO6Za6z9Im6VHfeqVkVYbvFdKrN8mtNuQQ0oioG_6vvuLE9zV-p2YT1t_WogqieFJHb9C6t9QZCqDopU7QBKiczoSk72tMffL0j_Byn1TlG7TlN0nvtnBB1kScz6tI6SvlkwgPOvHneBX-CHiDHPAlS_GOsnh1j5hVn1eRMbPS728sQpsTlVJ4WOpDP9AO1u4JG2ViU-4gohtpN5Lkc7FFbz30MSpi3aQQxXRjHslA--4Hbc-fqD1TjqgUyNfF4xK_paSUgihHwygIqNUeI6MuCltKKJCUR4eeNXItXPl9_GxSsWPYpetIw-0yFHwdrTWvr4fmy-gdteNrAtOv6DwDvGsgw52vnqoX8Sev_yWg9FBGKnFcRLIyMfkw9_7UQEn0-P9v0kqLxf63xk3QnGtdlhZNLA8l3OapCpHkYeZgcEX9UQFU") void upload(@Param("filepath") String[] filepath, @Param("filekey") String[] filekey , @Param("filename") String[] filename, ProgressCallBack callBack); /** * 请求跟返回经过统一特殊处理。 */ @POST("http://a.szy.com:4480/SignManageServer/sign/appHandle") @Deal String onDeal(@Field("reqcode")String reqcode,@Param("pageNo") String pageNo, @Param("pageSize") String pageSize, @Param("schoolId") String schoolId); } }

执行请求,返回类型支持java实体类,只需要在方法返回类型String换成java实体类,它会自动给你转化成实体类。

/**

* 表单提交

*/

public static void postForm() {

String result = HttpRequest.getNetService().postForm("10960");

log.info("postForm :" result);

}

/**

* json提交

*/

public static void postJson() {

String mobile = "15060568265";

String password = "e10adc3949ba59abbe56e057f20f883e";

String result = HttpRequest.getNetService().postJson(mobile, password);

log.info("postJson :" result);

}

强大的Json解析器

我们可以看到返回类型支持java实体类跟String类型,但是这边建议使用String类型 然后解析的时候使用JsonUtils类,这是一个强大解析器 直接 int forum_id = JsonUtils.parse(json,Integer.class,"notice","forum_id"); 我们可以看到直接解析出第二层forum_id里面的数据,直接转换成int类型, 如果需要转换实体类,直接在第二个参数改成 类名.class ,然后指定那一层就解析那一层数据转化成实体类。 这样是不是很方便。

该例子是以同步请求为demo

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页