3.接口测试利器

大家好,路人,本文如果对你有帮助,点个在看,顺便忙转发一下,非常需要大家的支持,对java有兴趣的朋友欢迎加我微信itsoku交流。

SpringMVC系列或者是SpringBoot系列中都会有大量的案例,这些案例都需要运行来验证效果,所以急需一款高效的接口测试工具。

可能大家用的比较多的是swagger或者postman,这2个确实不错,不过今天今天给大家推荐一种更简单的接口测试工具。

这款工具就是idea中的自带的:HTTP Client,这款工具特别好用,主要的优点:

1、若想测试一个接口,只需要几行代码

2、运行特别容易

3、方便切换各种环境

1、创建一个springboot项目

idea中创建一个springboot项目,来个controller,内容如下,模拟了5种常见的情况,基本上包含了我们开发中所有的场景

 
  1. @RestController
  2. public class IndexController {
  3. //get请求
  4. @RequestMapping("/get")
  5. public String get() {
  6. return "get";
  7. }
  8. //post请求,模拟表单提交
  9. @PostMapping("/post")
  10. public Map<String, String[]> post(HttpServletRequest request) {
  11. return request.getParameterMap();
  12. }
  13. //post请求json数据
  14. @PostMapping("/body")
  15. public List<Integer> body(@RequestBody List<Integer> list) {
  16. return list;
  17. }
  18. //put请求
  19. @PutMapping("/put")
  20. public String put() {
  21. return "put";
  22. }
  23. //模拟多文件上传,顺便带上表单数据
  24. @PostMapping("/upload")
  25. public Map<String, Object> upload(@RequestParam("file1") MultipartFile file1,
  26. @RequestParam("file2") MultipartFile file2,
  27. User user,
  28. HttpServletRequest request) {
  29. Map<String, Object> result = new HashMap<>();
  30. result.put("file1.size", file1.getSize());
  31. result.put("file1.name", file1.getName());
  32. result.put("file2.originalFilename", file1.getOriginalFilename());
  33. result.put("file2.size", file2.getSize());
  34. result.put("file2.name", file2.getName());
  35. result.put("file2.originalFilename", file2.getOriginalFilename());
  36. result.put("params", request.getParameterMap());
  37. result.put("user", user);
  38. return result;
  39. }
  40. static class User {
  41. private String userName;
  42. private int age;
  43. public String getUserName() {
  44. return userName;
  45. }
  46. public void setUserName(String userName) {
  47. this.userName = userName;
  48. }
  49. public int getAge() {
  50. return age;
  51. }
  52. public void setAge(int age) {
  53. this.age = age;
  54. }
  55. }
  56. }

项目结构如下图

启动项目,下面我们来对这几个接口进行测试。

2、测试上面5个接口

下面我们通过HTTP Client工具来对上面几个接口进测试。

2.1、创建http后缀的文件

文件必须以http为后缀,这种文件会自动被HTTP Client插件识别,效果如下

2.2、将下面内容丢到创建好的文件中

 
  1. ### get 请求
  2. GET http://localhost:8080/get
  3. ### post 提交表单
  4. POST http://localhost:8080/post
  5. Content-Type: application/x-www-form-urlencoded
  6. name=张三&age=23
  7. ### body 中传递json数据
  8. POST http://localhost:8080/body
  9. Content-Type: application/json
  10. [3,10,40]
  11. ### put请求
  12. PUT http://localhost:8080/put
  13. ### 多文件上传文件接口测试
  14. POST http://localhost:8080/upload
  15. Content-Type: multipart/form-data; boundary=WebAppBoundary
  16. --WebAppBoundary
  17. Content-Disposition: form-data; name="file1"; filename="pic_1.jpeg"
  18. < C:\Users\Think\Desktop\1.jpeg
  19. --WebAppBoundary--
  20. --WebAppBoundary
  21. Content-Disposition: form-data; name="file2"; filename="pic_2.jpeg"
  22. < C:\Users\Think\Desktop\2.jpeg
  23. --WebAppBoundary--
  24. --WebAppBoundary--
  25. Content-Disposition: form-data;name=userName
  26. tom
  27. --WebAppBoundary--
  28. --WebAppBoundary--
  29. Content-Disposition: form-data;name=age
  30. 23
  31. --WebAppBoundary--
  32. ###

接口格式很简单,如下

 
  1. 请求方式 地址
  2. header部分,key=value格式,每个一行
  3. 参数部分(注意这个上面要有个空行)

此时文件的效果是下面这样,点击红框中的按钮,即可以运行这个测试用例

2.3、运行接口

3、http文件内容如何写?

HTTP Client提供了很多案例,点击Examples案例可以看到各种请求案例,这里就不细说了,大家一看就懂。

4、文件上传的写法

多文件上传且携带表单数据,这个比较特别,下面是接口代码

 
  1. //模拟多文件上传,顺便带上表单数据
  2. @PostMapping("/upload")
  3. public Map<String, Object> upload(@RequestParam("file1") MultipartFile file1,
  4. @RequestParam("file2") MultipartFile file2,
  5. User user,
  6. HttpServletRequest request) {
  7. }

对应的HTTP Client的写法如下:

 
  1. ### 多文件上传文件接口测试
  2. POST http://localhost:8080/upload
  3. Content-Type: multipart/form-data; boundary=WebAppBoundary
  4. --WebAppBoundary
  5. Content-Disposition: form-data; name="file1"; filename="pic_1.jpeg"
  6. < C:\Users\Think\Desktop\1.jpeg
  7. --WebAppBoundary--
  8. --WebAppBoundary
  9. Content-Disposition: form-data; name="file2"; filename="pic_2.jpeg"
  10. < C:\Users\Think\Desktop\2.jpeg
  11. --WebAppBoundary--
  12. --WebAppBoundary--
  13. Content-Disposition: form-data;name=userName
  14. tom
  15. --WebAppBoundary--
  16. --WebAppBoundary--
  17. Content-Disposition: form-data;name=age
  18. 23
  19. --WebAppBoundary--
  20. ###

你可以把这个请求想象为页面中的一个表单,表单有4个元素:2个File元素,用来选择需要上传的2个文件,2个输入框,分别用来输入userName和age,用—WebAppBoundary来隔离每个元素,如果有多个元素,都需要用—WebAppBoundary隔离开来,如下:

5、环境切换

我们测试接口的时候,有开发环境、测试环境、UAT环境,生产环境,每个环境的接口信息都不一样,比如接口地址。

HTTP Client中可以创建环境配置文件,来对不同的环境信息进行配置,操作如下

5.1、创建环境配置文件

生成了一个环境配置文件,如下

文件内容格式

 
  1. {
  2. "环境名称": {环境参数json格式},
  3. "环境名称": {环境参数json格式}
  4. }

 
  1. {
  2. "dev": {
  3. "url": "http://localhost:8080",
  4. "name": "张三"
  5. },
  6. "test": {
  7. "url": "http://localhost:9090",
  8. "name": "李四"
  9. }
  10. }

5.2、http文件中引用环境配置信息

通过{{key}}可以引用环境中的信息,运行的时候会被替换,如:

 
  1. GET {{url}}/get

5.3、运行的时候选择环境

运行的时候会提示你选择环境,此时环境中的配置信息就被用上了

大家赶紧去体验一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值