python pytest脚本执行工具

news2024/11/26 11:35:09

pytest脚本执行工具

支持获取当前路径下所有.py脚本

添加多个脚本,一起执行


import tkinter as tk
from tkinter import filedialog
import subprocess
import os
from datetime import datetime

def select_script():
    script_path = filedialog.askopenfilename(filetypes=[("Python files", "*.py")])
    script_entry.delete(0, tk.END)
    script_entry.insert(tk.END, script_path)


def add_script():
    script_path = script_listbox.get(tk.ACTIVE)
    selected_scripts_listbox.insert(tk.END, script_path)


def delete_script():
    selected_index = selected_scripts_listbox.curselection()
    if selected_index:
        selected_scripts_listbox.delete(selected_index)


def run_tests():
    selected_scripts = selected_scripts_listbox.get(0, tk.END)
    for script_path in selected_scripts:
        result = subprocess.run(["pytest", "-q", script_path], capture_output=True, text=True)
        # 输出执行结果倒序
        output_text.insert(1.0, result.stdout)
        output_text.insert(1.0, f"--- {script_path} --- ###执行详情### \n", "red")
        output_text.insert(1.0, "\n")

        # 获取系统时间,输出执行结果文本框
        current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
        output_text.insert(1.0, "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
        output_text.insert(1.0, f">>>>>>>>>>>>>>>>>>>>>>>>>  {script_path} @ 脚本执行时间:{current_time} <<<<<<<<<<<<<<<<<<<<<<<<<\n")
        output_text.insert(1.0, "\n")
        output_text.insert(1.0, ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
        output_text.insert(1.0, "\n")
        output_text.insert(1.0, "\n")


# 清空执行结果文本框
def clear_output():
    output_text.delete(1.0, tk.END)


# 清空已选脚本列表
def clear_selected_scripts():
    selected_scripts_listbox.delete(0, tk.END)

# 创建主窗口
window = tk.Tk()
window.title("Test Runner")

window.geometry('800x800')

window.resizable(0, 0)  # 防止用户调整尺寸

# 创建框架容器
frame = tk.Frame(window)
frame.pack()

# 获取当前目录下所有的.py文件
script_files = [file for file in os.listdir() if file.endswith(".py")]

# 创建脚本选择列表框
script_listbox = tk.Listbox(frame, width=30, height=10)
script_listbox.pack(side=tk.LEFT, padx=0, pady=10)


# 将.py文件添加到选择列表框中
for file in script_files:
    script_listbox.insert(tk.END, file)

# 创建已选脚本列表框
selected_scripts_listbox = tk.Listbox(frame, width=30, height=10)
selected_scripts_listbox.pack(side=tk.LEFT, padx=0, pady=10)


# 创建添加脚本按钮
add_button = tk.Button(frame, text="添加脚本", command=add_script)
add_button.pack(side=tk.LEFT, padx=5)

# 创建删除脚本按钮
delete_button = tk.Button(frame, text="删除脚本", command=delete_script)
delete_button.pack(side=tk.LEFT, padx=5)

# 创建执行脚本按钮
run_button = tk.Button(frame, text="执行脚本", command=run_tests)
run_button.pack(side=tk.LEFT, padx=5)

# 创建清空输出按钮
clear_output_button = tk.Button(frame, text="清空输出", command=clear_output)
clear_output_button.pack(side=tk.LEFT, padx=5)

# 创建清空已选列表按钮
clear_button = tk.Button(frame, text="清空已选列表", command=clear_selected_scripts)
clear_button.pack(side=tk.LEFT, padx=5)


# 创建滚动条
scrollbar = tk.Scrollbar(window)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

# 创建文本框用于显示执行结果
output_text = tk.Text(window, height=50, width=110)
output_text.pack()

# 将滚动条与文本框绑定
output_text.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=output_text.yview)

# 运行主循环
window.mainloop()

已打包上传资源 

 (36条消息) 【免费】可以选择.py脚本,以pytest执行脚本资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/750214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 从入门到精通【进阶篇】之高可用哨兵机制(Redis Sentinel)详解

文章目录 0.前言1. 原理详解1.1. 哨兵机制的组建1.1. 哨兵是如何知道从库的信息 1.2. 主库下线的判定1.3. 哨兵集群选举1.4. 故障的转移 2. 总结3. Redis从入门到精通系列文章4. Redis哨兵模式面试题4. 1. 什么是Redis的哨兵模式&#xff1f;4. 2. 哨兵模式的优点是什么&#x…

云原生TDengine-v3.0部署手册

云原生TDengine-v3.0部署手册 一、管理namespace1.1 创建namespace1.2 namespaces列表 二、配置3份yaml文件2.1 tdengine3-storage-class.yaml2.2 taosd-service.yaml2.3 taosd-tdengine.yaml 三、服务部署3.1 部署StorageClass3.2 部署Service3.3 部署StatefulSet3.4 查看启动…

Linux--环境变量

指令分为两种&#xff1a; ①路径指令 比如我们都知道输入ls的作用是显示当前文件及目录&#xff0c;并且ls的路径是/usr/bin/ls。那么我输入ls与/usr/bin/ls的作用是等价的。之所以带路径&#xff0c;是因为不带路径找不到命令 ②系统指令 ls就是嵌入了环境变量后&#xff0c…

C语言程序设计——指针

一、字符指针 字符指针char*两种使用方法&#xff1a; //用法一&#xff1a;指向一个字符变量 char ch a; char* pc &ch; //用法二&#xff1a;指向一个字符串首地址 const char* p "abcde"; //注意p存储的是字符串的首地址&#xff0c;也就是字符a的地址。 …

基于node.js和Vue3的医院信息管理挂号系统

随着时代的发展,无线互联网技术的应用和普及给人们的生活带来了极大的改变,现在信息技术不仅可以提高我们的工作效率,还能有效的规避一些错误风险,节约人力成本。我国国民一方面对健康的要求越来越重视了&#xff0c;另一方面现代人的健康问题日益严重&#xff0c;所以医院信息…

【imarkdown】一个轻量级markdown图片链接转换器

imarkdown imarkdown是一个轻量级markdown图片链接转换器&#xff0c;你可以轻松地对图片链接进行本地到图片服务器、图片服务器到本地、图片服务器到图片服务器的转换。 因为语雀转markdown的时候图片存在防外链行为&#xff0c;如果想要把转出的markdown发表在其他平台&…

电子电路基础知识--电阻

视频教程 薄膜电阻 &#xff08;包括碳膜电阻、合成碳膜电阻、金属氧化膜电阻、玻璃釉膜电阻&#xff09;… 碳膜电阻 气态碳氢化合物在高温和真空中分解&#xff0c;碳沉积在蜜挂或者瓷管上&#xff0c;形成一层结晶碳膜。改变碳膜厚度和用刻槽的方法变更碳膜的长度&#…

驱动 day10 作业

要求&#xff1a;platform驱动实现 现象&#xff1a; test.c应用程序 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #in…

Edge浏览器和Google浏览器占用内存情况

最近发现适用edge浏览器看视频时&#xff0c;或者打开多个网页&#xff0c;电脑就会变得非常卡顿&#xff0c;打开任务管理器发现内存占用较多&#xff0c;网上也有人说edge浏览器确实占用内存较多。但是给出的解决方案是更新windows系统&#xff0c;这个方法显然不能接受&…

Modbus tcp转ETHERCAT网关modbus tcp功能码

远创智控YC-ECT-TCP网关能够连接到Modbus tcp总线和ETHERCAT总线中&#xff0c;实现两种不同协议设备之间的通讯。这个网关能够大大提高工业生产的效率和生产效益&#xff0c;让生产变得更加智能化。远创智控YC-ECT-TCP 是自主研发的一款 ETHERCAT 从站功能的通讯网关。该产品主…

渗透专题丨Vulnhub-Tr0ll2靶机打靶

确认目标机IP&#xff1a;192.168.38.140 进行端口扫描&#xff1a; 查看一下版本&#xff1a; 没有查到关键信息&#xff0c;以80端口作为突破&#xff1a; 拿到提示信息&#xff1a; 接下来尝试ftp登录&#xff0c;根据提示信息&#xff1a; 登录之后&#xff0c;拿到lmao.z…

线性电源,开关电源

稳压器是如何工作的&#xff1f; 稳压器是这样一种电路&#xff1a;无论输入电压或负载条件如何变化&#xff0c;它都能产生并保持固定的输出电压。 稳压器&#xff08;VR&#xff09;将来自电源的电压保持在其他电气组件相容的范围之内。它最常用于DC / DC电源转换&#xff…

基于亚博K210开发板——串口中断以及开启双核任务

文章目录 开发板实验目的实验准备硬件原理图软件对应SDK对应的头文件 uart.huart.h接口函数高速通用异步收发传输器(UARTHS)对应的头文件 uarths.huarths.h接口函数板级对应的头文件 bsp.hbsp.h接口函数 实验代码实验结果效果 开发板 亚博K210开发板 实验目的 本实验配置串…

vue3中的excel表导出功能(选中导出或导出所有,也可支持vue2)

1.安装模块 npm install xlsx file-saver -S 2.文件导入 import * as XLSX from "xlsx"; import FileSaver from "file-saver" 3.整体代码(可选中导出或导出所有) <template><div><el-button type"warning" click"down&quo…

apt-get install命令

在Linux系统中&#xff0c;apt-get命令默认安装包的位置是在/usr目录下。具体来说&#xff0c;安装的可执行文件会存储在/usr/bin目录下&#xff0c;而库文件会存储在/usr/lib目录下。同时&#xff0c;相应的配置文件和文档等也会存储在/usr/share目录下。 举例&#xff0c;ap…

【计算机系统概论Yale.patt】第三章

文章目录 3.数字逻辑3.1 MOS管3.1.1 p型MOS晶体管3.1.2 n型MOS晶体管 3.2 逻辑门3.2.1 非门——反相器3.2.2 或非门、或门或非门或门 3.2.3 与非门、与门3.2.4 逻辑门符号表示逻辑门的数电表达式摩根定律 3.3 逻辑结构3.3.1 组合逻辑译码器多路复用器全加器可编程逻辑阵列 3.3.…

20230713-------通过platform实现阻塞IO来驱动按键控制LED灯的亮灭

需添加的设备树节点 myplatform{ compatible "hqyj,myplatform"; reg<0X12345678 0X400>; interrupt-parent<&gpiof>; interrupts<9 0>; //9表示引用中断父节点时的索引信息 0表示默认设置 led1<&gpioe 10 0>;pdev.c #include …

linux 安装pytorch3d的坑

事实上&#xff0c;只要按照官方文档的说明就可以完美安装。其中坑的地方在于conda的管理可能会导致下载的版本不符合你的要求&#xff08;例如下载成了cpu版本、下载的cuda版本&#xff09;而同样尝试使用源码编译以及其他方式下载库都会导致同样的问题&#xff0c;这里主要的…

【动手学深度学习】层和块

层和块 简单介绍 块&#xff1a;描述单个层&#xff0c;由多个层组成的组件或整个模型本身。使用块进行抽象的一个好处是可以将一些块组合成更大的组件&#xff0c;这一过程通常是递归的 简单入门 import torch from torch import nn from torch.nn import functional as F# …

【分布式系统案例课】计数服务之需求收集和总架构设计

面试题 对B站视频观看量进行实时的计数 技术问题是一个比较普遍的问题&#xff0c;比如对头条作者的粉丝或者是对获赞进行计数。或者是对企业的业务指标进行计数&#xff0c;例如注册登录下单数这些等。 需求澄清 问题一&#xff1a;用户点击观察视频之后&#xff0c;这个数量…