pytest脚本执行工具
支持获取当前路径下所有.py脚本
添加多个脚本,一起执行
import tkinter as tk
from tkinter import filedialog
import subprocess
import os
from datetime import datetimedef 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文库