怎么判断curl调用接口返回成功:响应码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么判断curl调用接口返回成功:响应码相关的知识,希望对你有一定的参考价值。

参考技术A 背景:最近高可用测试,双机倒换后,需要统计多久倒换结束了。我的方法是通过业务来测试,客户端和服务端都能正常访问了,对外提供服务的能力肯定就提供了。

因为不知道什么时候倒换开始和结束,需要每一秒都发curl请求,然后统计每次调用接口的时间和响应结果,并根据响应结果写入文件,方便统计和分析测试结果。

我选择简单的shell脚本,上手快。Python的话需要环境上安装相应软件,请求的响应更容易处理更便于处理。本文选择shell,curl来发请求。

1) #! /bin/bash

# 指脚本使用/bin/bash来解释执行,#!是对脚本的解释器程序路径。标记为#!/bin/sh的脚本不应使用任何POSIX没有规定的特性 (如let等命令, 但#!/bin/bash可以)。

2) while循环的格式

while expression

do

command

command

```

done

或while [条件判断式]

do

程序

done

举例:计数器控制的while循环

#!/bin/bash

int=1

while [ $int<=5 ]

do

    echo $int

    let "int++"

done

3) if判断

if [ 条件判断一 ] && (||) [ 条件判断二 ]; then

elif [ 条件判断三 ] && (||) [ 条件判断四 ]; then

else

  执行第三段内容程式

fi

4) curl

curl -I -s --connect-timeout 5 -m 5 -w "%http_code" -o /dev/null  http://baidu.com

200

-I/--head 仅返回消息头部,使用HEAD请求

-s/--slient 减少输出的信息,比如进度

--connect-timeout <seconds> 指定尝试连接的最大时长

-m/--max-time <seconds> 指定处理的最大时长

-w "参数"  自定义curl的输出

-o/--output <file> 指定输出文件名称

#!/bin/bash

#根据测试背景填写连接超时时长,单位秒

ct=5

#根据测试背景填写响应最大时长,单位秒

rm=5

#根据测试背景填写URL

uri="http://baidu.com"

i=1

while [ $i<=36000 ]

do

    echo  `date` === $i === >> get-baidu.log

    let i++

    resp=`curl -I -s --connect-timeout $ct -m  $rm -w "%http_code" -o /dev/null  $url`

      if [ $resp==200 ]; then

              echo  `date`  == $i ==$resp  >> get-baidu.log

      else

            echo  `date`  == $i ==$resp  >> get-baidu.log

            echo  `date`  == $i ==$resp  >> get-baidu-fail.log

fi

done

找个和待测试环境网络可达的Linux环境,修改相关信息,直接运行即可。

注意uri是get请求,如果是post需要修改curl。

如果需要token认证则根据待测系统的实现进行携带token , 修改curl命令即可。

如果需要ssl证书,则携带相应证书,修改curl命令即可。

如果是ipv6的URL,curl中带上-6 -g参数。

计算响应时长(本例子是双机倒换时长)日志查看,从 get-baidu-fail.log找到失败点,在总的日志中找到相应记录,进行计算即可。

接口测试工具-Jmeter使用笔记(四:响应断言)

Jmeter中断言的类型有许多,我不在这里一一列举,只说下我用到的---响应断言。

作用:一个HTTP请求发出去,怎么判断执行的任务是否成功呢?通过检查服务器响应数据,是否返回预期想要的数据,如果是,判断任务成功,反之任务失败。

1、添加方式

选中一个取样器,右键->添加->断言->选中“响应断言”

(1)Apply to

关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只有一个请求。但是当我们发一个请求时,可以触发多个服务器请求,就有main sample  和 sub-sample之分了。

(2)要测试的响应字段

勾选“响应文本”,会在响应数据中进行校验。

(3)匹配规则

勾选“包括”,意味着只要相应数据中包含要校验的字段,任务就算成功。

(4)要测试的模式

即需要校验的数据值。

2、查看运行结果

(1)失败的任务

判断为任务失败,查看结果树任务结果颜色标红。

(2)成功的任务

判断为任务成功,查看结果树任务结果颜色标绿。

 

以上是关于怎么判断curl调用接口返回成功:响应码的主要内容,如果未能解决你的问题,请参考以下文章

接口请求返回状态码总结

curl 命令获取网络网站的响应码

HTTP响应的结构是怎么样的?

AJAX请求服务器,响应状态码为200,但调用error函数

JMETER接口测试中,如何把察看结果树中的响应数据存储到指定文件

http和https响应的状态码都有哪些