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/

  • 相关阅读:
    Unicode详解
    VC++ 6.0 中如何使用 CRT 调试功能来检测内存泄漏
    关于MFC下检查和消除内存泄露的技巧
    ASCII 、GB2312、GBK、GB18030、unicode、UTF8字符集编码详解
    A note from UrlEscape Function
    Unicode和UTF8之间的转换详解
    Base64编码
    全面解读WM_NOTIFY
    关于URL编码
    URL的#号
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/15153748.html
Copyright © 2011-2022 走看看