zoukankan      html  css  js  c++  java
  • httprunner 3.x学习19

    前言

    httprunner 3.x 取值是用 jmespath 表达式,当从头部取值Content-Type时,有特殊字符 -,会报错
    jmespath.exceptions.LexerError: Bad jmespath expression: Unknown token '-': headers.Content-Type

    使用示例

    从返回的headers提取Content-Type内容

    from httprunner import HttpRunner, Config, Step, RunRequest
    # 作者-上海悠悠 QQ交流群:717225969 
    # blog地址 https://www.cnblogs.com/yoyoketang/
    
    class TestLoginV4Case(HttpRunner):
        config = Config("登录v4用例").base_url("http://127.0.0.1:80")
        teststeps = [
            Step(RunRequest("step-login")
                 .post("/api/v1/login")
                 .with_json({"username": "test", "password": "123456"})
                 .validate()
                 .assert_equal("status_code", 200)
                 .assert_equal('headers.Content-Type', 'application/json')
                 )
        ]
    

    返回的 response 内容

    ================== response details ==================
    status_code : 200
    headers  : {
        "Date": "Tue, 17 Aug 2021 10:54:10 GMT",
        "Server": "WSGIServer/0.2 CPython/3.6.8",
        "Content-Type": "application/json",
        "Vary": "Accept, Cookie",
        "Allow": "POST, OPTIONS",
        "X-Frame-Options": "SAMEORIGIN",
        "Content-Length": "109"
    }
    cookies  : {}
    encoding : utf-8
    content_type : application/json
    body     : {
        "code": 0,
        "msg": "login success!",
        "username": "test",
        "token": "607d2bea6a652b05f3e3d201e7328e2bb4026173"
    }
    

    运行的时候会报错

    expression: headers.Content-Type
    data: {'status_code': 200, 
    'headers': {'Date': 'Tue, 17 Aug 2021 10:54:10 GMT', 'Server': 'WSGIServer/0.2 CPython/3.6.8', 'Content-Type': 'application/json', 'Vary': 'Accept, Cookie', 'Allow': 'POST, OPTIONS', 'X-Frame-Options': 'SAMEORIGIN', 'Content-Length': '109'}, 
    'cookies': {}, 
    'body': {'code': 0, 'msg': 'login success!', 'username': 'test', 'token': '607d2bea6a652b05f3e3d201e7328e2bb4026173'}}
    exception: Bad jmespath expression: Unknown token '-':
    headers.Content-Type
    

    解决办法

    因为headers.Content-Type有特殊字符-,jmespath处理特殊字符可以用引号包起来headers."Content-Type"

                 .validate()
                 .assert_equal("status_code", 200)
                 .assert_equal('headers."Content-Type"', 'application/json')
    
    

    参考文档:http://frayedmind.com/

  • 相关阅读:
    JavaScript Patterns 5.7 Object Constants
    JavaScript Patterns 5.6 Static Members
    JavaScript Patterns 5.5 Sandbox Pattern
    JavaScript Patterns 5.4 Module Pattern
    JavaScript Patterns 5.3 Private Properties and Methods
    JavaScript Patterns 5.2 Declaring Dependencies
    JavaScript Patterns 5.1 Namespace Pattern
    JavaScript Patterns 4.10 Curry
    【Android】如何快速构建Android Demo
    【Android】如何实现ButterKnife
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/15153748.html
Copyright © 2011-2022 走看看