这是我参与2022初次更文挑战的第7天,活动详情查看:2022初次更文挑战。

我们好~我是米洛
我正在从0到1打造一个开源的接口测试渠道, 也在编写一套与之对应的教程,期望我们多多支撑。
欢迎重视我的大众号米洛的测开日记,获取最新文章教程!

回忆

上一节咱们构思了一下怎样去支撑Python脚本,在和@joker评论今后,考虑到python脚本不会太复杂,所以咱们这一节咱们就先实现exec的版本。

exec初体验

exec是一个比较厉害的内置库,它为想要履行python代码的用户供给了便当,与之对应的还有execfile版本,这个是文件版本的exec,也便是说,他承受的参数从一段代码变成了一个指定的文件

上一节咱们好像介绍了exec的一般用法,那今日咱们就讲讲怎样经过exec拿到对应的履行成果,究竟关于履行成果咱们是会渴望能拿到的。

  • 实现第一个python办法: 获取本月第一天的日期
from datetime import datetime
def get_first_day_of_month():
    # 把day指定为01,肯定便是第一天啦
    return datetime.today().strftime("%Y-%m-01")

python代码是如此编写的,那exec里边咱们怎样拿到这个办法的成果呢?

首要呢,exec是没用回来值的。咱们只能经过,在exec履行的代码块里边界说变量去接纳回来值。

from datetime import datetime
return_value = datetime.today().strftime("%Y-%m-01")

那么在咱们的后台代码里边,就能够拿到return_value作为变量。

但我实践在fastapi的办法里边,发现是不收效的。会报return_value not defined,可是单个履行文件确实是能够。

于是我采用了新的办法,界说一个dict,传给exec,这样exec里边用到的变量等信息,都会回来到dict里边。

command = """
from datetime import datetime
return_value = datetime.today().strftime("%Y-%m-01")
"""
loc = dict()
exec(command, loc)
print(loc['return_value'])

测试平台系列(95) 支持编写自定义的python脚本

编写在线履行exec接口

其实本身是不想供给这个接口的,由于大部分脚本都能够在本地测试后传上来,但想了下,有就有吧,关于os.remove这样风险的句子还是得制止掉。

不过由于是演示,我就不制止了。

测试平台系列(95) 支持编写自定义的python脚本

先看一张效果图,履行完成后会有数据回来。但必定要留意的是,假如想拿到回来值,有必要要有:

current_time = xxx,而且把回来值设置为current_time。

为什么呢?由于exec本身是拿不到回来值的,假如你去exec句子里边界说一个变量:

current_time2 = "234"

这样就能在loc里边取到回来值了,所以假如要求有回来值,则有必要写上上述的python句子。

咱们便是经过exec履行代码,界说变量为回来值,接着取出该变量的办法实现整个进程的。

来看下代码怎样写:

测试平台系列(95) 支持编写自定义的python脚本

和上文提到的相同,假如没有回来值的话,直接便是None了。

编写python数据构造器

测试平台系列(95) 支持编写自定义的python脚本

和redis操作很类似,实现run办法,也是记载数据并拿到回来值。

改写获取数据构造器的办法

测试平台系列(95) 支持编写自定义的python脚本

新增Python类型,留意这儿我把这些数字,0-3都放到了Config类里边。

提醒一下各位,比如我这儿的办法没有给出对应的文件途径,我们能够全局查找,找到之。

对应Config.py也增加了这样的子类。

测试平台系列(95) 支持编写自定义的python脚本

前端部分的改动

测试平台系列(95) 支持编写自定义的python脚本

页面基本是沿袭的Redis的部分,在外部也稍微改造了一下:

测试平台系列(95) 支持编写自定义的python脚本

改用开关的形式,看起来更直观。


今日的内容就介绍到这儿了,欢迎我们活跃提出主张,一起打造一款开源工具。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。