httprunner3源码解读(4)parser.py「建议收藏」

httprunner3源码解读(4)parser.py「建议收藏」源码结构目录可以看到此模块定义了4个属性和12个函数,我们依次来讲解属性源码分析#匹配http://或https://absolute_http_url_regexp=re.compil

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

源码结构目录

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()}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/166060.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • es6set和map区别_list和map的区别面试

    es6set和map区别_list和map的区别面试转自https://blog.csdn.net/terence1212/article/details/52487656set是一种关联式容器,其特性如下:set以RBTree作为底层容器所得元素的只有key没有value,value就是key不允许出现键值重复所有的元素都会被自动排序不能通过迭代器来改变set的值,因为set的值就是键map和set一样是关联式容器,它们的底层容器都是红黑树,区别…

  • 文件夾加鎖

    文件夾加鎖此加密方法會使这个特殊的文件夹用正常情况不可打開也不可删除,可以起到保护重要资料的作用。  在Windows中“\”符号是路径的分隔符,比如“C:\Windows\System.exe”的意思是C分区的Windows文件夹中的System.exe文件。如果文件名中有“\”符号会怎么样呢?假如“sexinsex\”是一个文件夹的名字,这个文件夹位于“F:\”,它的路径就是“F:\sexinsex\…

  • windows下安装MinGW及C++的环境配置

    windows下安装MinGW及C++的环境配置方法一——VS:  使用windows开发神器visiostudio。这种方法比较简单,直接下载一个最新的vs安装就行。不单单是C++,C、C#、VB等都可以开发。方法二——只安装C++编译器:  最常用的免费可用的编译器是GNU的C/C++编译器,为了在Windows上安装GCC,您需要安装MinGW。1.首先去MinGW主页下载最新版本的MinGW: www…

  • 手把手教你学DSP5509视频教程「建议收藏」

    手把手教你学DSP5509视频教程「建议收藏」链接:https://pan.baidu.com/s/1GwRgSKOm_4wKkNUS65iJrA提取码:ybdy

  • java string与stringbuffer的区别_string类和stringbuilder类的区别

    java string与stringbuffer的区别_string类和stringbuilder类的区别简单地说,就是一个变量和常量的关系。StringBuffer对象的内容可以修改;而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。StringBuffer的内部实现方式和String不同,StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuff…

  • 黑客[入门]

    黑客[入门]第1章黑客基础知识随着互联网技术的飞速发展,网络世界的安全性不断受到挑战。如果你要上网,就免不了遇到黑客的侵扰。本章就为大家介留一些最基本的黑客入门知识,揭密黑客常用的一些命令,当然这些微不足道的伎俩难以入侵戒备森严的网络,不过至少让初学者对黑客的“工作情形”有初步的认识。本章导读1.1黑客简单介绍最早的计算机于1946年在宾夕法尼亚大学出现,而最早的黑客出现于麻省理工学院(贝尔实验室也有)。最初的黑客一般都是一些高级的技术人员,他们热衷于挑战、崇尚自由并主张信息的共享。1…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号