zoukankan      html  css  js  c++  java
  • 基于postman的api自动化测试实践

    测试的好处

    每个人都同意测试很重要,但并不是所有人都会去做。每当你添加新的代码,测试可以保证你的api按照预期运行。通过postman,你可以为所有api编写和运行测试脚本。

    postman中的测试

    在postman中,你可以通过添加脚本到请求当中,来使用动态变量、在请求之间传递数据以及编写测试。写在Pre-request Scripttab中的代码会在请求发送之前执行,而写在Teststab中的代码会在响应到达之后执行。

    测试用的语言是JavaScript。所以对于前端开发者来说几乎没有学习成本。对于一个单独的请求来说,如果它有测试脚本,那么在请求发送之后,在Test Resultstab可以看到对应的测试结果。另外为了可以快速编写测试脚本,postman提供了一些通用的代码片段(code snippets)。如下是对应的功能结构图:

    编写测试

    例子:

    pm.test("response is ok", function () {
        pm.response.to.have.status(200);
    });
    
    pm.test("environment to be production", function () { 
        pm.expect(pm.environment.get("env")).to.equal("production");
    });
    
    pm.test("response must be valid and have a body", function () {
         pm.response.to.be.ok;
         pm.response.to.be.withBody;
         pm.response.to.be.json;
    });
    
    var schema = {
        type: 'object',
        properties: {
            appID: {
                type: 'number',
            },
            avatar: {
                type: 'string',
            }
        }
    }
    pm.test('Schema is valid', function() {
      var jsonData = pm.response.json().data;
      pm.expect(tv4.validate(jsonData, schema)).to.be.true;
    });

    pm.test()

    为了遵循postman的规范,所有测试代码必须写在pm.test()的function里面。第一个参数是该测试的名称,第二个参数是一个返回boolean值的函数。也就是说这个函数如果返回true,表示测试通过,否则测试失败。

    pm.expect()

    这个断言函数是基于一个JavaScript测试库ChaiJS BDD构建的。通过类似的语法,你可以很方便的对响应里的数据或者一些变量进行断言。

    pm.response.to.be.*

    这个对象可以提供对响应常见的检查。如状态码是否符合预期等。

    tv4.validate()

    第一个参数是被检验的数据,第二个参数是json schema。通过则返回true,失败则返回false。

    运行测试

    我们通常会给多个api运行测试,因为我们有很多api,或者一个测试场景由多个api所组成。所以我们会把他们添加到一个集合(Collections)当中来运行。

    postman(用户界面)

    这里注意,请求是按照Collections当中的顺序线性执行。如果想改变执行顺序,可以修改Collections中的顺序,或者使用postman.setNextRequest("request_name");如果想要停止整个流程,可以执行postman.setNextRequest(null);

    newman(命令行工具)

    1.从postman当中导出为json格式的Collections

    2.全局安装newman,npm install -g newman 3.执行命令,newman run sample-collection.json

    结合Jenkins自动化

    一个通用的方案是在代码在提交后,或者合入仓库分支后,执行 newman -c jenkins_demo.postman_collection --exitCode 1。注意到--exitCode参数,这是为了告诉Jenkins,如果测试失败,将会返回值为1的退出码。这样就Jenkins就可以得知测试运行的成功与否了。

    总结

    我们都知道,工欲善其事必先利其器。对于基于api的测试而言,postman不失为一个不错的工具。另外对于web开发人员来说,postman也是一个常用的http调试工具。熟练的掌握它,也能一定程度地提高我们的工作效率。
    以上内容就是本篇的全部内容以上内容希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。
    如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以关注我,我们会有同行一起技术交流哦。

  • 相关阅读:
    DDOS学习笔记(《破坏之王-DDOS攻击与防范深度剖析》)
    gearman学习笔记1
    Sphinx学习笔记2
    docker学习笔记(一)
    Centos7安装配置Xhgui
    MongodDB学习笔记(二)(复制)
    MongoDB学习笔记(一)
    0927 DP 小测 #1
    「NOI 2011」阿狸的打字机 「AC 自动机」「数据结构」
    「POI 2005」SZA-Template 「失配树」「双向链表」「思维」
  • 原文地址:https://www.cnblogs.com/Chaqian/p/13172222.html
Copyright © 2011-2022 走看看