关于HttpRunner3获取IPV4和IPV6地址的bug解析

起因

  • 在使用HttpRunner3进行接口测试,原本请求测试环境的接口,脚本是通过了的。后来因为要获取代码覆盖率,于是在本地部署了服务,使用HttpRunner直接请求本地服务进行接口测试。但是,一模一样的脚本,请求本地服务总是提示失败

失败现象

发现过程

  1. 找到失败提示代码的具体位置
  2. 在失败之前将response.txt写入文件记录,此时接口测试结果pass

    但其实IP地址并没有获取到,查看log可以发现:
  3. 将写log代码改成sleep,接口测试结果fail,依旧是 ValueError: too many values to unpack (expected 2)
  4. 将写log代码改成re = response.txt,接口测试pass,由此可见response.txt对下面ip获取的代码有影响

原因

  1. response.raw.connection.sock.getsockname() 这句代码会获取ip地址和端口号,但是默认返回的tuple里面只有两个元素,而如果网络是IPV6,会返回4个元素,导致解析失败

    因此,这里我们需要把获取方式具体到元素的位置,如:

  2. 前面的探寻过程中发现response.text也会影响ip地址和端口的获取,原因如下:


    解决方式是在不需要的时候主动关闭连接

参考文章

posted @ 2021-07-21 18:06  cfYu  阅读(212)  评论(0编辑  收藏  举报