草庐IT

Postman测试简单操作

爬楼的猪 2025-07-18 原文

1、接口请求基本操作

1.1 例子

tips 在view的选项 可以zoom in调整窗口字帖大小。

1、创建一个测试的workspace,并命名为test
2、test后面新增一个add request
3、选择发送GET,URL为一个开源的https://api.apiopen.top/api/sentences获取每日一句
4、点击send查看内容

Tips:如果提示出现Error: tunneling socket could not be established, statusCode=407错误,参照以下解决办法 ) 关于tunneling socket could not be established , cause=getaddrinfo ENOTFOUND 错误的解决方法

1.2 postman页面布局

1.2 接口测试流程

1、了解接口是做什么的
2、获得接口文档(来源自开发)
3、设计测试用例
4、执行测试用例(利用postman请求发包)
5、验证返回结果

1.3 http接口报文

HTTP协议格式:http://ip:port/path?param,其中:

  • http://:协议
  • ip:资源所在计算机(域名最终会解析为ip)
  • port:资源对外发布的端口(80:http默认端口,443:https默认端口)
  • path:资源在服务器的位置(tomcat下面,其实是相对webapps的路径)

http是一个简单的请求和响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。http协议是基于url地址的资源请求协议

http报文的组成:HTTP通信过程包括客户端往服务器端发送请求以及服务器端给客户端返回响应两个过程。在此过程中,用于HTTP协议交互的信息就是http报文。http报文分为请求报文和返回(响应)报文。

1.4 简单的接口测试

1、知道接口地址
2、知道接口请求协议
3、知道接口请求方式
4、知道接口请求头(特别是POST请求方式)
5、传递参数类型(表单/请求体)

1.4.1 利用Flask编写本地响应接口

pip install flask 或者 pip3 install flask
代码很直观 不贴注释了,本章节重点在于对postman进行了解

from flask import Flask
from flask import request, jsonify
import json
app = Flask(__name__)


@app.route('/testget', methods=['GET'])
def testget():
    name = request.args.get('name', '')
    if name == 'zhangsan':
        age = 10
    else:
        age = None
    return jsonify(data={name: age})

''' 因为打开网页是GET请求 所以此处method有get只是为了方便打开网页'''
@app.route('/testpost', methods=['GET','POST'])
def testpost():
    getdata = request.get_json()
    
    '''data = data对输入data的类型要求为json类型'''
    return jsonify(
        data = getdata,
        extra = {
            'message': 'success'
        }
    )


if __name__ == '__main__':
    app.debug = True
    app.run()

1.4.1 Get接口简单测试

见面1.1 例子

1.4.2 Post接口简单测试

    1. 选择request类型为post,并输入请求地址和head
    1. 请求地址为http://127.0.0.1:5000/testpost
    1. headers的key为Content-Type,value为application/json

    1. 选择请求体Body类型为raw再选择为JSON
    1. 输入以下信息:{"name":"zhangsan"}
    1. 点击send发送

2 变量

2.1 全局变量和环境变量

    1. 在新版本的postman中,设置变量位置在右上方



![在这里插入图片描述](https://img-blog.csdnimg.cn/bc44ddeac1864878b11e0739895b71bf.png#pic_center

    1. 同理全局变量作用范围在全局,环境变量只作用在勾选了当前环境的内容当中
    1. 调用变量方式为两个大括号:{{}}
    1. 变量作用不仅在请求内容中,也可以在URL中
    1. 环境变量作用优先级高于全局变量
    1. 例子:如下

2.2 利用test设置环境变量

    1. 在test选项卡内输入下列代码
    1. 代码示例
// 获得所有的返回json数据
var jsondata = pm.response.json();

// 定位到data子集下面的name属性
var name = jsondata.data.name;

// 设置新环境变量名和值
pm.environment.set("newname", name);
    1. 结果如下所示:

TIPS:
如果变量名提前定义好,值不赋值,则可以通过该方法来替换变量的值,达到提前写好脚本的作用。

3 Test断言

3.1 Test 断言作用

1、用于判断返回的body内是否包含某个需要的结果
2、针对这些亲求命令组成的集合进行测试时候显示测试结果通过率
3、Test断言的使用方法可以在Test模块右侧看见提示

3.2 Test断言的简单应用

  • 利用Test断言判断返回结果是否包含某个变量
  • 直接在右侧点击方法 替换string为所需内容,点击运行即可

4 参数化

4.1 参数化的过程

1、 新建测试集合
2、对于测试请求当中的变量名与参数化文档的标头一致
3、新增断言内容,因为集合运行的pass结果通过断言显示
4、设置参数化运行次数

4.2 新建txt参数测试文档

    1. 新建txt测试文件,其中标头表示姓名和年龄的大小
    1. txt文件如下
txtname,txtage
zhangsan,10
lisi,12
wangwu,13
zhaoliu,14

4.3 参数化测试例子

    1. 编写请求体,其中请求体内的变量与参数化文档的标头一致

    1. 设置断言内容,这里设置为响应代码为200表示成功标志,尤其注意 改变了请求之后 记得保存

    1. 运行集合
    1. 设置参数化运行参数

    1. 查看运行结果

5 随机数

随机数类型包括随机整数、时间戳等等

    1. 随机整数:调用命令{{$randomInt}}即可
    1. 时间戳调用命令{{$timestamp}}

有关Postman测试简单操作的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  3. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  4. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  5. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  6. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  7. ruby - 即使失败也继续进行多主机测试 - 2

    我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r

  8. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

  9. ruby - 简单获取法拉第超时 - 2

    有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url

  10. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

随机推荐