• 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软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   最近跟一些刚刚进入软件测试行业的朋友去交流,发现了一个有趣的现象,就是对于这个行业的很多问题的认识都是一致的片面,当然也可以理解为误区。自己利用一点时间,把他们对于这个行业的认识误区都罗列出来,然后结合自己这么多年的工作经验和大家一同交流一下,毕竟自己也是从这个阶段走过来的,后来者能少走些弯路是最好的。  自己整理了软件测试人员最容易陷入的28个误区。  1、测试和开发永远都是死对头  虽然测试与开发的工作性质是对立的,但是目的都是为了项目更好的发展。  我以前发起过一个倡议:我们讨论的时候不要用他们(开发人员)和我们(测试人员),而是统一用咱们,因为开发人员和测试人员本来就是一起的。如果...
            1 0 1668
            分享
          • 测试需求收集完毕后,开始测试设计。测试用例是什么?测试用例就是一个文档,描述输入、动作、或者时间和一个期望的结果,其目的是确定应用程序的某个特性是否正常的工作。设计测试用例需要考虑以下问题:测试用例的基本格式:软件测试用例的基本要素包括测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果,下面逐一介绍。用例编号:测试用例的编号有一定的规则,比如系统测试用例的编号这样定义规则:PROJECT1-ST-001,命名规则是项目名称+测试阶段类型(系统测试阶段)+编号。定义测试用例编号,便于查找测试用例,便于测试用例的跟踪。测试标题:对测试用例的描述,测试用例标题应该清楚表达测试用例的用途。...
            12 14 1945
            分享
          • 作为一名测试人,掌握数据库常用的操作不可缺少,下面就一段mysql 查询语句梳理几个相关语法知识。 本篇文章主要包括两方面内容常用的sql语法开发代码中如何和sql进行关联案例代码` select a.blastid,d.apptime,a.charge_approve,             a.blast_batch,            ...
            0 0 1679
            分享
          • http接口工具有很多如:postman、jmeter、soupUI、Java+httpclient、robotframework+httplibrary等1、什么是接口接口就是内部模块对模块,外部系统对其他服务提供的一种可调用或者连接的能力的标准接口的种类和分类:webservice和http api接口1)webservice接口是走soap协议通过http传输,请求报文和返回报文都是xm格式,可以通过jme、soapui工具进行测试;2)http api接口是走http协议通过路径来区分调用的方法,请求报文格式都是key-value形式,返回报文一般是json串,常见的请求方式有get、...
            1 1 1681
            分享
          • 跟大家说说写好一份简历的三个核心点——技能、技能的结果、技能的价值。请好好琢磨这三个短语,如果有需要,记在你的小本本上,或者收藏本文,随时回看和品琢。1、技能。即,你掌握了哪些技术,具备哪些能力。此点,几乎每个人会写。你只需注意技能匹配度的问题——招聘企业的要求是什么,他们需要候选人具备什么样的技能。如果是投递心仪的公司,更要做好简历技能匹配,别拿一份简历广撒网。我做hr的朋友与我讲过,他最头痛的事,便是招聘需求写着要求职者具备x能力,并且有企业实操,可仍旧有很多不满条件的简历投进来,哪怕是加上必须具备这样的词眼,也没啥效果。而他的做法,也很简单:哼一句,右滑退出……你可能会说,咱就广撒网,说...
            0 0 1195
            分享
      • 51testing软件测试圈微信