如何用postman做postman接口测试教程

经过三篇文章的预热,大家对接口测试和HTTP协议有了一个初步了解,今天咱们切入正题:如何执行HTTP接口测试。包括如下三步:
构造一条符合要求的HTTP请求消息;
发给我,我给你回响应;
你读取HTTP响应,检查响应内容是否正确。
今天我们就讲,如何使用postman发送符合要求的HTTP请求。
how-如何安装postman
postman是chrome浏览器的一个插件,这里不讲如何安装,各位自己百度解决。
how-如何使用postman发送符合要求的HTTP消息
还是用之前的例子:
我提供加法计算的接口,你要给我传递2个数(a和b),我给你返回一个结果。
请求报文可能是:
POST http://192.168.27.184:8081/add HTTP/1.1
Host: 192.168.98.178:8081
Connection: keep-alive
Host: 192.168.98.178:8081
Connection: keep-alive
Content-Type: application/x-www-form- charset=UTF-8
Accept-Encoding: gzip,deflate
响应报文可能是:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Cache-Control: no-cache
Content-Type: application/charset=UTF-8
Transfer-Encoding: chunked
使用postman构造这个请求的步骤如下:
选择请求方法
输入请求URL
输入请求参数值
从图中我们可以看到,服务器返回了正确的响应。至此,你已经完成了接口测试的第一条用例。bingo!就是这么简单。
如果你想测试更多的用例,也很简单,a和b传不同的值就好。
HTTP请求传参数最常见的有4种方式:
get方式,参数值放到url中,如
表单方式,示例中的“a=1&b=1”放在body中,头部的Content-Type是application/x-www-form-urlencoded
json传值,body是:{"a":1,"b":1},头部的Content-Type是application/json
xml传值,头部的Content-Type是application/xml
当接口定义用的是不同的传值方式时,只需在postman上做相应修改就好。
今天讲了postman的最简单使用,也补充了一点HTTP请求传参的知识。这里抛出2个问题:
如果没有接口文档,你如何做接口测试?
如果有接口文档,你按照接口文档的定义,使用postman发送了请求,得不到服务器的正常响应,怎么办?
欢迎大家留言讨论。
欢迎关注我公众号“鹿爷聊测试”。
平时我也经常用,超级方便~
第一点,没有接口文档那叫攻击,哈哈。
第二点,在确定你发的请求,地址正确、参数正确、加密算法正确、文件正确、服务在线的前提下。拿着你的证据跟开发先沟通,后提bug。
没有接口文档?F12看Network
得不到正确响应,看下服务器返回的状态码,再查自己的URL、参数、方法。
(1)没有接口文档,感觉无法测试呢。各位大神们,会怎么处理呢?
(2)如果自己的url、method, 参数等都是正确的, 那需要找开发聊下,哪里出了问题,是否是bug
没有接口文档,我一般通过抓消息来解决;
如果使用postman发送请求得不到正确响应,将postman发的消息抓到,然后将正常是的消息抓到,可以采用消息对比的方式找到差异。
后方可回复, 如果你还没有账号请点击这里 。
solochen84 (solo)
第 18668 位会员 /
共收到 6 条回复HTTP的接口工具有很多,可以进行http请求的方式也有很多,但是可以直接拿来就用,而且功能还支持的不错的,我使用过的来讲,还是postman比较上手。
1、支持用例管理
2、支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能
3、支持批量运行
4、支持用例导出、导入
5、支持云端保存用例【付费用户】
可以说POSTMAN满足了HTTP接口测试的大部分功能,只有少部分的功能不被支持,比如:请求流程的控制;前面说了这么多,接下来我们就看看POSTMAN的安装与使用吧。
1、什么是POSTMAN
POSTMAN是一个Chrome的一个插件工具,我们可以通过Chrome的应用商店进行搜索并安装,安装完成会在桌面上显示一个postman的图标,每次点击这个图标就可以启动POSTNA的界面。
启动过后就是上面的界面了,左边是用来管理用例的目录结构,右边是具体某个用例的请求内容的参数及响应内容;默认的postman会自带一个demo的项目叫“POSTMAN Echo”,里面有各种场景的用例demo,对于新上手的同学可以通过查看这些demo用例来学习如何使用POSTMAN。
2、新建一个项目
直接点击左边栏上面的添加目录图标来新增一个根目录,这样就等于新建了一个项目,我们可以把一个项目或一个模块的用例都存放在这个目录之下,并且在根目录之下我们还可以在建立子目录来进行功能用例的细分,具体见下图。
2、新增一个用例
创建了项目目录后我们就可以新建用例了,具体是点击右侧区域的+号来新增一个空用例的模板,也可以通过复制一个已有用例来达到新建一个用例的目的,2种方法见下:
3、添加请求信息
新建的用例请求内容为空,我们需要添加相应的请求信息,这部分的操作都在右侧的信息区域,一般流程如下:
选择一个请求方法,如:get或post填写请求的url,如:如果是get则请求参数直接写在url后,用?连接如果是post则请求添加在body中点击“send”发送请求查看请求响应内容
4、post请求参数
post请求的主要的特点是把请求数据放在body中,而非url后
上面的样例是post方式传输普通参数,如果我们需要发送带文件的请求时,就要改下请求格式了,具体如下:
注意上面标红框的内容,都是必须要对应上。
5、添加头信息
有些时候请求时还需要一些特定的头信息,postman同样可以完美的支持,直接点击Headers标签就可以进行请求头的信息设置
6、预处理和结果检查
预处理主要是对一些环境变量之类的进行设置,相当于数据初始化;如图:
响应处理就是对响应结果进行分析和验证,比如检查code是不是200,内容是不是等于具体某个值,是否包含特定的值等等。
因为预处理和结果检查都是使用js作为脚本语言,所以你还可以进行任意的js可以实现的场景,来辅助测试。
7、全局变量与环境变量
全局变量我们可以自己在预处理和结果处理2个脚本环境里进行赋值,在具体的测试数据里我们就可以直接使用,具体的使用方法是为:{{variable_key}};比如你在脚本中可以设置全局变量:
[javascript]
postman.setGlobalVariable("username",&"tester");&&
postman.setGlobalVariable("username", "tester");
那么在用例数据项里面我就可以这样使用,{{username}},用来代表具体的tester值,具体见下图
而环境变量的设置可使用与全局变量基本一样,只是环境变量我们还有另外一个入口可以进行设置,那就是环境配置管理中,我们可以预先建立若干和与环境相关的一套变量,根据实际的测试需求在执行前选择对应的环境变量模板,这样可以快速切换测试服务器与线上服务器之前的环境差异。比如:配置2套环境变量模板,一套url是测试环境,另一套为线上环境,根据测试对象不同我们选择不同的环境变量模板就行了,而不再需要修改测试数据中的url了。
上面我们就把请求的host提取出来,然后在不同环境变量模板里使用不同的url值,后面我们就可以通过选择不同的环境变量模板来进行对应的请求测试
8、导出用例为代码
POSTMAN还有一个很赞的地方就是导出用例为CODE,即如果你编写好了用例之后可以通过点击“Generate
Code”来一键生成代码,并且还有好多语言和类库可以选择,帧的是棒棒哒!
9、批量执行用例
最后我们再来看看POSTMAN的批量执行功能,这个功能由单独的runner来负责的,我们需要在另外的界面进行操作,具体如下:
依次点击上面的按钮就会出现runer界面,如下直接点击“Start Test”即可
阅读(...) 评论()2016年1月 Java大版内专家分月排行榜第二2015年12月 Java大版内专家分月排行榜第二2015年8月 Java大版内专家分月排行榜第二2015年3月 Java大版内专家分月排行榜第二2015年1月 Java大版内专家分月排行榜第二2014年12月 Java大版内专家分月排行榜第二2014年11月 Java大版内专家分月排行榜第二2014年6月 Java大版内专家分月排行榜第二2014年4月 Java大版内专家分月排行榜第二2014年1月 Java大版内专家分月排行榜第二2013年11月 Java大版内专家分月排行榜第二
2015年9月 Java大版内专家分月排行榜第三2015年6月 Java大版内专家分月排行榜第三2015年5月 Java大版内专家分月排行榜第三2015年2月 Java大版内专家分月排行榜第三2014年3月 Java大版内专家分月排行榜第三2013年12月 Java大版内专家分月排行榜第三
2016年8月 扩充话题大版内专家分月排行榜第二
2015年8月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。不会代码,如何做接口测试?-上海于达信息技术有限公司
不会代码,如何做接口测试?作者:上海于达信息技术有限公司 / 公众号:bdqn021发表时间 :
首先,容小编我说一个很尖锐的问题:业界有很多接口自动化工具,比如postman、jmeter、httpapi、soupUI等。为啥还要自己搞一套框架(造轮子)? 由于在项目中遇到了以下几个问题:1、对返回的json需要进行层级检查例如:检查返回的json中date下第五个list中的image的值为ad。2、对失败case的结果提示能够一眼看出case失败的具体原因。例如:不是json?返回404?json层级解析失败?json的key不存在?json的value不存在?3、后续想方便的扩充功能,以适用不同的项目需求。例如:支持jsonp返回的json解析,支持protobuf的解析等。以上三个问题,用业界的通用框架都难以满足需求,所以决定自己写一套框架~对于框架,我们的考虑是这几方面:易用性——是否简单上手通用性——是否通用基本的http接口测试需求可扩展性——是否方便的扩展功能易读性——测试结果是否很直接的知道失败具体原因如何不写代码就可以做接口测试呢?你要做的就是:写excel用例写excel用例写excel用例重要的事情说三遍~~~具体用例是什么样的呢?所以你要做的就是按照excel的字段说明写用例即可~框架功能⊙增加可定义post请求和get请求方法,增加header支持⊙增加返回结果的校验,支持xml、json及纯文本的返回内容检查⊙增加case可选择性执行,支持Y-正常case、E-异常case、N-不执行case⊙对xml及json的返回,支持每条case指定key-value对的检查,增加失败原因的提示⊙支持json层级检查及list的检查⊙增强返回异常结果的检查,例如空、非200返回。⊙增强对运行结果的统计及提示,支持失败发送邮件提醒。⊙支持301、302跳转⊙支持执行所有sheet页的case⊙支持关联具体框架是如何实现的呢?且听我娓娓道来~咳咳~~~不想看代码的同学,请直接跳到结尾~框架介绍:具体的实现流程如下:main.py:入口函数,指定case文件及sheet页ExcelPath=os.getcwd()+'/TestCaseDir/yuedu_Testcase.xlsx'SheetName='ALL'#需要执行的sheet页名称,如果想执行所有sheet页,必须为大写的ALLserver_case.excelobj=create_excel(ExcelPath,SheetName)#跑case,如果有错误发出邮件通知if SheetName.upper() == 'ALL':#执行所有sheet页的用例Sheetnames = []Sheetnames =server_case.excelobj.get_all_sheetname()#print Sheetnamesfor SheetName in Sheetnames:SheetName =str(SheetName)mailbody,count =run(SheetName)Sendmail('caochengzhen@', mailbody,count, SheetName)else:#执行指定sheet页的用例mailbody,count =run(SheetName)Sendmail('caochengzhen@', mailbody,count, SheetName) 读取用例采用com组件读取excel的方式采用这种方式的原因是:Com组件操作是windows提供的,理论上可以支持所有excel的操作,在这里用到了如果case执行失败,将对应项标红底色的功能。支持excel和wps,只需要将com组件名称修改即可。self.xlApp = win32com.client.Dispatch('Excel.Application') #MS:Excel WPS:ettry:self.book =self.xlApp.Workbooks.Open(sFile)except:print_error_info()print "打开文件失败"exit() 发送请求统一维护在HTTPInvoke(url,requestUri)方法中def HTTPInvoke(url,requestUri):proto,rest=urllib.splittype(url)host,rest=urllib.splithost(rest)conn =httplib.HTTPConnection(host)ifreqmethod.upper()=="GET":print urlconn.request(reqmethod.upper(), url,headers=reqHeaders)rsps = conn.getresponse()if rsps.status==200:data = rsps.read()data = str(data)conn.close()return dataelif rsps.status==301 orrsps.status==302:headerstr=rsps.getheaders()for i in headerstr:ifi[0].lower()=='location':url = i[1]proto,rest=urllib.splittype(url)host,rest=urllib.splithost(rest)conn =httplib.HTTPConnection(host)conn.request('GET', url)rsps =conn.getresponse()ifrsps.status==200:data =rsps.read()data = str(data)conn.close()returndataelse:data='[Response_Code_err]:'+str(rsps.status)data = str(data)return dataifreqmethod.upper()=="POST":print requestUri + 't' + 'body=' +sArgeconn.request(reqmethod.upper(),requestUri,body=sArge,headers=reqHeaders)rsps =conn.getresponse()if rsps.status==200:data = rsps.read()data = str(data)conn.close()return dataelif rsps.status==301 orrsps.status==302:headerstr=rsps.getheaders()print headerstrfor i in headerstr:ifi[0].lower()=='location':url = i[1]proto,rest=urllib.splittype(url)host,rest=urllib.splithost(rest)conn =httplib.HTTPConnection(host)conn.request('GET', url)rsps =conn.getresponse()ifrsps.status==200:data =rsps.read()data =str(data)conn.close()return dataelse:data='[Response_Code_err]:'+str(rsps.status)return data通过这个函数可以处理post请求,get请求、302跳转请求。对返回结果的遍历校验:ResString=HTTPInvoke(sInput,requesturi) #执行调用print ResString#获取返回码并比较#printResString,checkitem#如果服务器返回码不是200,直接报错。ifResString.startswith('[Response_Code_err]'):real_value=ResStringprint real_valueret1=check_result(excelobj, suiteid, caseid,real_value,excelobj.CheckVaule)#写测试结果write_result(excelobj, suiteid, caseid, excelobj.resultCol, ret1)continue#判断是使用xml还是json解析。if ResString.find('xmlversion=')&0:try:real_value=et.fromstring(ResString).find(checkitem).textret1=check_result(excelobj, suiteid, caseid,real_value,excelobj.CheckVaule)except:printsInput+"返回不是标准的XML!"real_value=sInput+"返回不是标准的XML!"ret1=check_result(excelobj, suiteid, caseid,real_value,excelobj.CheckVaule)elifResString.startswith('{'):try:ResString=ToUnicode(ResString)hjson =json.loads(ResString)expstr=excelobj.read_data(suiteid,excelobj.casebegin+caseid, 13)ifstr(checkitem).startswith('['):try:checkitem= checkitem.replace("‘","'")checkitem= checkitem.replace("’","'")hjson =json.loads(ResString)precmd='hjson'+checkitemreal_value=eval(precmd)ret1=check_result(excelobj, suiteid, caseid,real_value,excelobj.CheckVaule)except:real_value=checkitem+'解析失败,请检查层级及语法!'ret1=check_result(excelobj, suiteid, caseid,real_value,excelobj.CheckVaule)else :ResString=ToUnicode(ResString)#printResStringifResString.find(checkitem)&0:pattern = re.compile(r'%s(.*?),' % checkitem)res = pattern.findall(ResString)ifres==[]:#如果要匹配的字段在最后,则没有逗号,只能匹配大括号pattern = re.compile(r'%s(.*?)}' % checkitem)res =pattern.findall(ResString)#printres[0]else:print'key:'+checkitem+'在response中不存在!'real_value='key:'+checkitem+'在response中不存在!'ret1=check_result(excelobj, suiteid, caseid,real_value,excelobj.CheckVaule)#写测试结果write_result(excelobj, suiteid, caseid, excelobj.resultCol, ret1)continuereal_value=res[0].replace('"','')#printreal_valuereal_value=real_value[1:]ret1=check_result(excelobj, suiteid, caseid,real_value,excelobj.CheckVaule)except:printsInput+"返回不是标准的json!"real_value=sInput+"返回不是标准的json!"ret1=check_result(excelobj, suiteid, caseid,real_value,excelobj.CheckVaule)else:#非json非xml文件expstr=excelobj.read_data(suiteid,excelobj.casebegin+caseid, 14)ifResString.find(expstr)&0:real_value=expstrret1=check_result(excelobj, suiteid, caseid,real_value,excelobj.CheckVaule)else:print sInput+'中不存在'+expstrreal_value=sInput+'中不存在'+expstrret1=check_result(excelobj, suiteid, caseid,real_value,excelobj.CheckVaule)依次会校验错误返回码→xml→json→字符串进行校验。对于错误的结果,发送邮件mail_from = 'venus@'mail_to = maillisttimenow = datetime.datetime.utcnow() + datetime.timedelta(hours=8)#东8区增加8小时title = '【'+interfacename + '_接口测试结果】'+ timenow.strftime( '%Y-%m-%d %H:%M:%S' )body = strHtmlif count[1] == 0:print 'All Case is OK!'passelse:sendEmail.SendMail(mail_from,mail_to, title, body)北大青鸟以人才供应链为导向,提供基于岗位的项目实战训练,投入大量人力成本和资金成本研发了实训课程体系即:真实的工作环境、真实的项目案例、真实的工作压力、真实的工作机会,致力于培养符合社会实际需求的软件人才,多年来已累计为全行业培养合格员工超过100万人。上海北大青鸟于达校区联系我们电话:021-QQ:微信公众号:bdqn021
老师微信:地址:上海市普陀区凯旋北路1305号(清水湾会议中心)7楼(北大青鸟于达)官网:http://www.57test.nethttp://m.57test.net相关文章猜你喜欢广州光孝寺天天炫拍中禾生物种业集团襄阳日报青春好花红#统计代码Postman Postman接口测试工具使用简介
我的图书馆
Postman Postman接口测试工具使用简介
Postman接口测试工具使用简介
by:授客 QQ:
本文主要是对Postman这个接口测试工具的使用做个简单的介绍,仅供参考。
1)下载并安装chrome浏览器
<img title="" name="image_operate_84693" alt="Postman&Postman接口测试工具使用简介" src="/DownloadImg/4/">
<img title="" name="image_operate_85173" alt="Postman&Postman接口测试工具使用简介" src="/DownloadImg/4/">
弹出框中选择【添加】
<img title="" name="image_operate_88887" alt="Postman&Postman接口测试工具使用简介" src="/DownloadImg/4/">
4.打开Postman
<img title="" name="image_operate_53030" alt="Postman&Postman接口测试工具使用简介" src="/DownloadImg/4/">
界面简介&&& &
<img title="" name="image_operate_8916" alt="Postman&Postman接口测试工具使用简介" src="/DownloadImg/4/">
以下是一个简单的接口文档(文档说明并不是非常详细)
<img title="" name="image_operate_53513" alt="Postman&Postman接口测试工具使用简介" src="/DownloadImg/4/">
对该接口进行简单测试
<img title="" name="image_operate_69914" alt="Postman&Postman接口测试工具使用简介" src="/DownloadImg/4/">
注:url仅输入http://xx.xxx.xxxx.xxx/ timeline/postandcheck.do 部分,剩余部分是下面编辑参数时自动输入的
步骤6:点击 Refresh headers,如下
<img title="" name="image_operate_54684" alt="Postman&Postman接口测试工具使用简介" src="/DownloadImg/4/">
步骤7:发送请求,如下,可以看到具体的信息
<img title="" name="image_operate_4352" alt="Postman&Postman接口测试工具使用简介" src="/DownloadImg/4/">
步骤8:可选的,可将请求保存到一个集合
<img title="" name="image_operate_55508" alt="Postman&Postman接口测试工具使用简介" src="/DownloadImg/4/">
点击【Add to collection】,如下,左侧添加了集合及请求记录
<img title="" name="image_operate_5533" alt="Postman&Postman接口测试工具使用简介" src="/DownloadImg/4/">
步骤9:可选的,点击预览【Preview】,显示如下
<img title="" name="image_operate_63843" alt="Postman&Postman接口测试工具使用简介" src="/DownloadImg/4/">
点击图中的【Build】可以返回之前界面
TA的最新馆藏
喜欢该文的人也喜欢}

我要回帖

更多关于 postman接口测试实例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信