大家好~我是米洛

我正在从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. react 移动端 兼容性问题和一些小细节

    react 移动端 兼容性问题和一些小细节 使用 ES6 的浏览器兼容性问题 react 对低版本的安卓webview 兼容性 iOS下 fixed与软键盘的问题 onClick 阻止冒泡 meta对 ...

  2. 安卓性能优化之计算apk启动时间

    之前有人在知乎提问:"怎么计算apk的启动时间?" : 利用Python或者直接用adb命令怎么计算apk的启动时间呢?就是计算从点击图标到apk完全启动所花费的时间.比如,对游戏 ...

  3. Myeclipse 中怎样更改web项目的访问名

    第一步:在要修改的项目名称上右击选择最下面一列的"prepertise"(属性),进入属性设置界面. 第二步:找到左侧菜单栏的"Myeclipse"中的web项 ...

  4. 在node中通过cors跨域。

    cors : 全称 cross origin resource share  跨资源共享 在nodejs 中可以通过在服务器端设置代码如下实现cors跨域 res.setHeader('Access- ...

  5. FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 回复留言

    之前文章分享FastAPI(七十二)实战开发<在线课程学习系统>接口开发-- 留言列表开发,这次我们分享如何回复留言 按照惯例,我们还是去分析这里面的逻辑. 1.判断用户是否登录 2.用户 ...

  6. OllyDbg---循环、串操作和寻址方式

    循环 字符串指令和寻址方式 循环 XOR ECX,ECX MOV ECX,15H LABEL: DEC ECX CMP ECX,0 JNE LABEL LOOP 重复循环,直到计数器的值为0,每次循环 ...

  7. [已解决] error: cannot convert `int*' to `int**' for argument `2' to `void print_f(int, int**)'

    #include "stdio.h" #include "stdlib.h" #include "time.h" void print_f( ...

  8. OpenHarmony标准设备应用开发(二)——布局、动画与音乐

    (以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 邢碌 上一章我们讲解了应用编译环境准备,设备编译环境准备,开发板烧录,将一个最简单的 OpenAtom OpenHar ...

  9. Hyperledger Fabric 部署在多个主机上

    前言 在实验Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务.TLS组织运行维护Orderer服务中,我们已经完成了使用提供 TLS-CA 服务的 council ...

  10. JVM垃圾回收篇

    点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 基础概念 GC=jvm垃圾回收,垃圾回收机制是由垃圾回收器Garbage ...