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
,除非它已经是绝对urlregex_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 作用:将函数参数解析到
args
和kwargs
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()}
推荐阅读
- 解读《摩根集团》(1)
- 赋能|赋能|学习关关公益天赋解读~
- Android事件传递源码分析
- Quartz|Quartz 源码解析(四) —— QuartzScheduler和Listener事件监听
- [源码解析]|[源码解析] NVIDIA HugeCTR,GPU版本参数服务器---(3)
- ffmpeg源码分析01(结构体)
- Java程序员阅读源码的小技巧,原来大牛都是这样读的,赶紧看看!
- 活的教导7:两个阶段
- Vue源码分析—响应式原理(二)
- cocosbcx白皮书解读(一)|cocosbcx白皮书解读(一)| 区块链如何统一开发者、发行商、用户之间的利益