大家好~我是米洛

我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持。

欢迎关注我的公众号米洛的测开日记,获取最新文章教程!

回顾

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

exec初体验

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

上一节我们似乎介绍了exec的普通用法,那今天我们就讲讲怎么通过exec拿到对应的执行结果,毕竟对于执行结果我们是会渴望能拿到的。

  • 实现第一个python方法: 获取本月第一天的日期
import datetime

def get_first_day_of_month():
# 把day指定为01,肯定就是第一天啦
return datetime.today().strftime("%Y-%m-01")

python代码是如此编写的,那exec里面我们怎么拿到这个方法的结果呢?

首先呢,exec是没用返回值的。我们只能通过,在exec执行的代码块里面定义变量去接收返回值。

import datetime

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

那么在我们的后台代码里面,就可以拿到return_value作为变量。

但我实际在fastapi的方法里面,发现是不生效的。会报return_value not defined,但是单个执行文件确实是可以。

于是我采用了新的方法,定义一个dict,传给exec,这样exec里面用到的变量等信息,都会返回到dict里面。

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

编写在线执行exec接口

其实本身是不想提供这个接口的,因为大部分脚本都可以在本地测试后传上来,但想了下,有就有吧,对于os.remove这样危险的语句还是得禁止掉。

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

先看一张效果图,执行完成后会有数据返回。但一定要注意的是,如果想拿到返回值,必须要有:

current_time = xxx,并且把返回值设置为current_time。

为什么呢?因为exec本身是拿不到返回值的,如果你去exec语句里面定义一个变量:

current_time2 = "234"

这样就能在loc里面取到返回值了,所以如果要求有返回值,则必须写上上述的python语句。

我们就是通过exec执行代码,定义变量为返回值,接着取出该变量的方式实现整个过程的。

来看下代码怎么写:

和上文提到的一样,如果没有返回值的话,直接就是None了。

编写python数据构造器

和redis操作很相似,实现run方法,也是记录数据并拿到返回值。

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

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

提醒一下各位,比如我这里的方法没有给出对应的文件路径,大家可以全局搜索,找到之。

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

前端部分的改动

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

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


今天的内容就介绍到这里了,欢迎大家积极提出建议,一起打造一款开源工具。

测试平台系列(95) 前置条件支持简单的python脚本的更多相关文章

  1. 测试平台系列(83) 前置条件支持Redis语句

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上节我们打了个野,解决了一 ...

  2. 测试平台系列(94) 前置条件该怎么支持Python呢

    回顾 上一节我们狠狠操练了一番oss,但我们的任务还很长久,所以我们需要继续打磨我们的功能. 那今天就让我们来思考下,如何在前置条件支持python脚本,多的不说,我们也暂时不考虑其他语言,因为光考虑 ...

  3. 测试平台系列(85) 把redis运用到实战中

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上一节我们让支持了前置条件 ...

  4. 测试平台系列(92) 让http请求支持文件上传

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持. 欢迎关注我的公众号米洛的测开日记,获取最新文章教程! 回顾 上一节呢,我们编写了oss的 ...

  5. 测试平台系列(79) 编写Redis配置功能(下)

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上一节我们提出了优化Dao ...

  6. 测试平台系列(71) Python定时任务方案

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 定时任务 定时任务,顾名思义: ...

  7. 测试平台系列(82) 解决APScheduler重复执行的问题

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上一节我们编写了在线执行R ...

  8. 测试平台系列(90) 编写oss客户端

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持. 欢迎关注我的公众号米洛的测开日记,获取最新文章教程! 回顾 上一节我们编写了在线执行测试 ...

  9. 测试平台系列(97) 完善执行case部分

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持. 欢迎关注我的公众号米洛的测开日记,获取最新文章教程! 回顾 上一节我们讨论了怎么结束一个 ...

随机推荐

  1. 主线程中的Looper.loop()为什么不会造成ANR

    引子: 正如我们所知,在android中如果主线程中进行耗时操作会引发ANR(Application Not Responding)异常. 造成ANR的原因一般有两种: 当前的事件没有机会得到处理(即 ...

  2. CCF201709-2公共钥匙盒改进版

    问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...

  3. mysql的下载和安装详细教程(windows)

    Windows下安装MySQL详细教程 1.安装包下载    2.安装教程 (1)配置环境变量 (2)生成data文件 (3)安装MySQL (4)启动服务 (5)登录MySQL (6)查询用户密码 ...

  4. ssm 框架实现增删改查CRUD操作(Spring + SpringMVC + Mybatis 实现增删改查)

    ssm 框架实现增删改查 SpringBoot 项目整合 一.项目准备 1.1 ssm 框架环境搭建 1.2 项目结构图如下 1.3 数据表结构图如下 1.4 运行结果 二.项目实现 1. Emplo ...

  5. 反射常用API以及内省机制(代码)

    学习内容: (1)获取构造函数 这里不贴Person类了,不然代码太多太乱了,只给出一些常用API // 创建字节码对象 Class<?> aClass = Class.forName(& ...

  6. Azure Virtual Desktop(一)创建配置管理

    一,引言 Azure 虚拟创面是一项 Azure 服务,可以让我们管理: 1)VDI(虚拟桌面基础架构) 2)云端的 RDSH:RDSH 是 RDS(远程桌面服务)中的一个角色.这些类型的服务器用于托 ...

  7. Docker部署Nginx启动成功,浏览器拒绝访问

    今天下午部署完tomcat和mysql之后就接着部署Nginx,本以为Nginx也和之前两个一样简单,但是就因为标题这个问题,花费了我一个小时纠错. 过程复现: 解决完上一篇博客(https://ww ...

  8. unity 编辑器扩展简单入门

    unity 编辑器扩展简单入门 通过使用编辑器扩展,我们可以对一些机械的操作实现自动化,而不用使用额外的环境,将工具与开发环境融为一体:并且,编辑器扩展也提供GUI库,来实现可视化操作:编辑器扩展甚至 ...

  9. 记一次mysql请求超时甩锅历程

    今天下午业务找我说是线上环境一个mysql库很慢,请求出现了大量的超时,让帮忙看看,以下为查找过程及甩锅过程. 1. mysql请求超时,ok,我们所有线上mysql都是开启了慢查询日志的,查找慢查询 ...

  10. 新华三Gen10服务器进SSA查看、配置阵列

    1.开机自检进F10 2.F10后选择[smart storage administrator](跳到第5步)或选择第一项IP[intelligent provisioning] 3.选择执行维护 4 ...