问题由来
之前在《用tcl实现一个测试架构》的文章中我们实现了Ourtest测试架构,为了让测试架构更容易使用,在最近研究学习了Nicegui的基础上,决定为这个测试架构加个壳,做个界面。
Nicegui是基于fastapi的,性能没得说;用它主要是因为可以写一套代码同时运行在web服务模式和windows本地界面模式;还有就是有很多漂亮的现代化控件,开发效率很高。
界面展示

功能介绍
- 左边选中脚本,右边点击运行按钮,就可以跑脚本,点暂停可以暂停脚本,点继续可以让脚本继续运行,点停止就可以终止脚本运行,在脚本编辑器的下面窗口输出标准输出
- 如果点击右边的运行,可以直接运行所有的脚本,并且在日志里面输出标准输出
- 点击保存可以保存脚本
代码共享
可以到下面的链接,下载项目代码
链接:https://pan.baidu.com/s/1xaDFbj2tgo3qBnJbp7bmfA?pwd=i4al
提取码:i4al
下载完后,可以直接运行python learning.py来运行该程序,如果缺少相关的依赖库,自己用pip安装即可。
from nicegui import ui,app,run
import logging
import pathlib
import subprocess
import psutil
from uitility import get_tree_node
from dataclasses import dataclass
from nicegui.dataclasses import KWONLY_SLOTS
from nicegui.events import UiEventArguments,handle_event
from typing import List
@dataclass(**KWONLY_SLOTS)
class MyClickEventArguments(UiEventArguments):
other:List
script_process = None
suite_process = None
script_path = pathlib.Path(__file__).parent / 'scripts'
logger = logging.getLogger()
class LogElementHandler(logging.Handler):
"""A logging handler that emits messages to a log element."""
def __init__(self, element: ui.log, level: int = logging.NOTSET) -> None:
self.element = element
super().__init__(level)
def emit(self, record: logging.LogRecord) -> None:
try:
msg = self.format(record)
self.element.push(msg)
except Exception:
self.handleError(record)
def tree_on_select (event):
if (event.value and pathlib.Path(event.value).is_file()):
with open(event.value) as script_file:
app.storage.general['script_content'] = script_file.read()
app.storage.general['script_current'] = event.value
def script_on_save (event):
if app.storage.general['script_content']:
with open(app.storage.general['script_current'], mode='w') as script_file:
script

最低0.47元/天 解锁文章
853

被折叠的 条评论
为什么被折叠?



