• 0
  • 1
分享

现在API测试被越来越多的公司重视,对于测试工程师来说每次收到需求之后首先要做的是研究需求文档。既然接口是两个独立系统之间同步数据或访问对方程序的途径,我们也就是要先看看这些接口到底是连接了哪两个系统,它们之间的关系到底是怎样的。所以一般需求文档里会包括接口名称,接口描述,接口类型,接口地址,推送参数,返回参数这几项内容。熟悉Postman的同学可以发现这些都是必需的部分:

1.png

有了这几项内容之后,我们需要把需求文档转换成Excel,这样不管是做案例管理,还是对比结果,都相对容易一些。而后期Python读取和写入也更方便。在Excel中,我们只写入变化的部分,而对于相对固定的,例如server信息则直接在Python代码中参数化。所以做出来的输入文档如下:

2.png

有了这些内容,我们还是使用xlrd和xlwt包对excel进行处理,对于如何使用xlrd和xlwt就不在本文做过多解释了。为什么要新建一个workbook2?因为在跑完一遍之后,如果我们发现有些接口跑出来的结果有问题,我们可以不用关闭workbook1,直接进行修改,然后rerun,就会生成新的workbook2,覆盖之前的结果,节省打开关闭workbook的时间。

workbook1 = xlrd.open_workbook(r"C:\Demo\API\API_Cases.xlsx")
  workbook2 = xlwt.Workbook(encoding='utf-8')
  sheet1 = workbook1.sheet_by_index(0)
  sheet2 = workbook2.add_sheet("response")

读取内容之后,我们对需要参数化的部分进行修改,一般情况下,url的前半部分为http://xx.xx.xx.xx:8080不变,所以我们只需要把excel中第二列取出来拼接成url即可,body部分也如是,如果有固定部分的body,我们可以在python中直接定义,然后与excel中的内容进行拼接:

 par_url = sheet1.col_values(1)
  body = sheet1.col_values(2)

当然,拼接的代码需要写在循环里面:

request_url = 'https://postman-echo.com' + par_url[i]
  print(request_url)

执行的时候,我们用到的是requests这个包,如果需求中既有GET,又有POST,又有PUT,还有DELETE,由于用到的参数不同,我们可以分别处理。对于不同请求需要用到的不同的header,我们也可以在循环里对其进行定义,如果区别很大,我们也可以在excel中单独定义一列,然后在代码中加入相应的读取语句即可。对于POST类型的请求,我们需要以下几个参数:

response = requests.post(url=request_url, headers={}, data=body[i])
  print(body[i])

在执行完之后,如果直接写入excel,我们打开response文件之后会发现,所有的返回内容都变成了一行,非常不便于分析。所以我们需要先对返回的数据进行处理,再写入excel。如果返回的内容中包含中文,则必须加上ensure_ascii=False, 否则就会出现编码问题。

 json_dic = json.dumps(json.loads(response.content), indent=4, ensure_ascii=False)

最后,我们把整理好的输出内容写入新建的excel文档并保存,就大功告成了。

sheet2.write(i, 0, json_dic)
  workbook2.save(r"C:\Demo\API\response.xls")

其中遇到了一些问题,也在这里提示一下,比如在POST请求中,有些参数是随机数,导致每次发送请求的时候都需要手动修改,否则就会报“已存在”之类的错,这时候我们需要用到random这个包。我们以生成10位随机数为例,在代码中用生成的10位随机数替换掉body中{{random}}的内容:

random_num = str(math.floor(1e10 * random.random()))
  response = requests.post(url=request_url, headers={}, data=body[i].replace('{{random}}', random_num))

运行结果如图:

3.png

生成的新文件:

4.png

打开这个response.xls,可以看到50个API已经跑完了。点进A1可以看到response的具体内容:

5.png


版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   有一份51Testing测试行业调查问卷需要您的助力,差不多三分钟的时间即可填完。我们给您准备了一份价值398元的测试课程作为礼品,感谢您的帮忙~链接:http://vote.51testing.com/  前言  最近是跳槽季,发现有小伙伴在一些非技术的软性问题上答的不是很好。  众所周知,程序员情商偏低,而这些软性问题,恰恰都具有一定欺骗性和吹牛皮成分在里边,对于演技不好的直男癌,简直就是天生克星。  其实不用太担心,软性问题往往就那几个,稍加训练和准备,你就可以成为一位高端名猿。  题目  第 1 题:说一下你自己的缺点  演技考验:4星  这题处处暗藏杀鸡,很多小伙伴会推心置腹,诚...
            0 0 1166
            分享
          •   前言  无论做什么自动化,测试报告一定要有的,它可以清楚的展示出来我们执行用例的情况。便于查看自动化测试结果内容。安静这边了解目前通过python生成的测试报告分别有:HTMLTestRunner、BeautifulReport 、 pytest-html 和Allure,这几种报告内容都是属于不同的模板,本篇文章主要介绍下这如何生成以上四份报告的过程以及对比情况。  HTMLTestRunner  HTMLTestRunner是Python标准库的unittest模块的扩展。它生成易于使用的HTML测试报告。使用时需要下载,然后放到项目目录中  下载地址:http://tungwaiyi...
            12 12 1706
            分享
          • 概述客户端测试包括很多工作,测试工作有功能测试、稳定性测试、代码静态检查、性能测试、兼容性测试和安全测试等,辅助工作有用例管理、设备管理、项目管理等,还有很多其他工作。工程师们往往花了很多时间在做一些重复性工作,没有过多的精力投入到产品质量的深挖上去。地图客户端测试效率提升思路是不定期得组织版本耗时分析,将耗时较长工作缩短、将耗时少工作变为零耗时,从而释放人力做更多探索测试。比如:事例1:设备管理这块,没有一个公共的地方记录设备在哪位工程师手上,工程师借出还入操作比较繁琐,导致在设备调度这块耗时很长。解决方式:开发一个设备管理App,工程师只需要打开设备做借入还出操作;搭建设备管理平台,用于方...
            0 1 4176
            分享
          •   国产 3A 游戏《黑神话:悟空》正式发售不到 1 小时,即登上 Steam 最热玩游戏榜首,当前玩家人数数量破百万人。  今日上午 10 时,中国首款“3A”游戏《黑神话:悟空》正式上线,包括 PS5 / Steam / WeGame 平台已经预载的玩家现已可正式解锁游玩。该游戏由浙江企业游科互动科技有限公司(以下简称“游科”)出品,此前预售时曾多次登顶全球最大游戏发行平台 Steam 的全球热销榜。  《黑神话:悟空》是以中国神话为背景的动作角色扮演游戏,游戏中玩家将扮演一位“天命人”,为了探寻昔日传说的真相,踏上一条充满危险与惊奇的西游之路。  2024 年 6 月 10 日,《黑神话...
            0 0 203
            分享
          •   性能测试中,CPU和内存是关注最多的两个性能指标。以我行应用最多的系统架构(WAS+Oracle)来说,CPU使用率高的问题多发生于数据库,比如索引不当引发的表扫描、绑定变量使用不当引发的硬解析、连接池使用不当引发的频繁建立断开连接,这些都会导致数据库服务器CPU使用率高。  内存问题则多发生于应用服务器。部署在WAS平台的Java应用,经常发生的问题是JVM堆内存溢出。产生该问题的原因有很多:  ·由环境引发的,虚拟机物理内存不足;  ·由参数配置引发的,JVM堆内存设置过小;  ·由应用程序引发的,内存泄露,错误使用大对象等等。  在实际性能测试过程中选择监控指标时,对JVM堆内存的监...
            14 14 1099
            分享
      • 51testing软件测试圈微信