httprunner3源码解读(4)parser.py

源码结构目录 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 【httprunner3源码解读(4)parser.py】作用:解析参数,参数有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()}

    推荐阅读