zoukankan      html  css  js  c++  java
  • httprunner3源码解读(4)parser.py

    源码结构目录

    可以看到此模块定义了4个属性和12个函数,我们依次来讲解
     

    属性源码分析

    # 匹配http://或https://
    absolute_http_url_regexp = re.compile(r"^https?://", re.I)
    
    # 使用$$转义$符号
    dolloar_regex_compile = re.compile(r"$$")
    
    # 变量符号, e.g. ${var} or $var
    variable_regex_compile = re.compile(r"${(w+)}|$(w+)")
    
    # 函数符号, e.g. ${func1($var_1, $var_3)}
    function_regex_compile = re.compile(r"${(w+)(([$w.-/s=,]*))}")
    

    函数源码分析

    parse_string_value

    作用:将字符串转换为数字

    "123" => 123
    "12.2" => 12.3
    "abc" => "abc"
    "$var" => "$var"
    

    build_url

    作用:在url前面加上base_url,除非它已经是绝对url
     

    regex_findall_variables

    作用:从内容中提取所有变量名,格式为$variable

    Examples:
    >>> regex_findall_variables("$variable")
    ["variable"]
    
    >>> regex_findall_variables("/blog/$postid")
    ["postid"]
    
    >>> regex_findall_variables("/$var1/$var2")
    ["var1", "var2"]
    
    >>> regex_findall_variables("abc")
    []
    

    regex_findall_functions

    作用:从字符串内容中提取所有函数,格式为${fun()}

    Examples:
    >>> regex_findall_functions("${func(5)}")
    ["func(5)"]
    
    >>> regex_findall_functions("${func(a=1, b=2)}")
    ["func(a=1, b=2)"]
    
    >>> regex_findall_functions("/api/1000?_t=${get_timestamp()}")
    ["get_timestamp()"]
    
    >>> regex_findall_functions("/api/${add(1, 2)}")
    ["add(1, 2)"]
    
    >>> regex_findall_functions("/api/${add(1, 2)}?_t=${get_timestamp()}")
    ["add(1, 2)", "get_timestamp()"]
    

    extract_variables

    作用:递归提取内容中的所有变量
     

    parse_function_params

    作用:将函数参数解析到argskwargs

    Examples:
    >>> parse_function_params("")
    {'args': [], 'kwargs': {}}
    
    >>> parse_function_params("5")
    {'args': [5], 'kwargs': {}}
    
    >>> parse_function_params("1, 2")
    {'args': [1, 2], 'kwargs': {}}
    
    >>> parse_function_params("a=1, b=2")
    {'args': [], 'kwargs': {'a': 1, 'b': 2}}
    
    >>> parse_function_params("1, 2, a=3, b=4")
    {'args': [1, 2], 'kwargs': {'a':3, 'b':4}}
    

    get_mapping_variable

    作用:获取映射变量
     

    get_mapping_function

    作用:获取映射函数
     

    parse_string

    作用:将带有变量和方法的字符串,转为字符串实际内容

    Examples:
    >>> raw_string = "abc${add_one($num)}def"
    >>> variables_mapping = {"num": 3}
    >>> functions_mapping = {"add_one": lambda x: x + 1}
    >>> parse_string(raw_string, variables_mapping, functions_mapping)
        "abc4def"
    

    parse_data

    作用:封装parse_string提供给外部调用
     

    parse_variables_mapping

    作用:解析变量映射

    parse_parameters

    作用:解析参数,参数有3种形式
    1. list列表:e.g. ["iOS/10.1", "iOS/10.2", "iOS/10.3"]
    2.csv文件上传:"${parameterize(account.csv)}"
    3.从debugtalk.py函数中生成:${gen_app_version()}

  • 相关阅读:
    SilverLight商业应用程序开发学习笔记(6)从服务器中获取数据之二
    C#利用WCF改进文件流传输的三种方式 子曰
    Extjs的打印解决方案 子曰
    承接一个外包开发项目后,开发流程以及如何做好。 子曰
    查看数据库中的字段所在的表中或某值所在的表和字段 子曰
    Ruby在windows下配置所遇到的问题 子曰
    Extjs显示时间兼容性问题——firefox正常显示,IE不正常出现NaNNaNNaN的解决方式 子曰
    Data Guard 三种模式解释 子曰
    extjs计算两个DateField所间隔的月份(天数) 子曰
    SQL SERVER自带调试工具SQL Server Profiler简单用法 子曰
  • 原文地址:https://www.cnblogs.com/jiakecong/p/15524487.html
Copyright © 2011-2022 走看看