接口自动化项目搭建好以后,有些童鞋不想每次都去更新主入口文件下的mark,或者说有些做功能的童鞋不懂得怎么更改mark来执行特定标记的用例(虽然说明文档已经很清楚)。在此特意写了一个小的窗口,让他们来点击选择自己想要运行的流程。
主入口添加一个方法:
import tkinter as tk
from tkinter import ttk
# 全局变量,用于存储用户选择的标记值
mark = None
# 显示弹窗并获取用户输入的标记
def get_user_input():
def submit(event):
global mark
selected_index = listbox.curselection()
if selected_index:
mark = tags[selected_index[0]][0]
root.destroy()
root = tk.Tk()
root.title("选择标记")
root.geometry("600x250")
root.resizable(False, False)
frame = ttk.Frame(root)
frame.pack(pady=20)
label = ttk.Label(frame, text="请双击选择要执行的接口测试脚本标记:")
label.grid(row=0, column=0, padx=10)
listbox_frame = ttk.Frame(frame)
listbox_frame.grid(row=1, column=0, padx=10, pady=(10, 0))
# 创建列表框
listbox = tk.Listbox(listbox_frame, width=30, height=4)
listbox.pack(side=tk.LEFT, fill=tk.BOTH)
# 创建滚动条
scrollbar = ttk.Scrollbar(listbox_frame, orient=tk.VERTICAL)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
listbox.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)
# 添加标记及解释说明
tags = [
("smoking", "冒烟测试,****"),
("regress_gm", "GM回归测试,***"),
("regress_mu", "MU回归测试,*****")
]
for tag, explanation in tags:
listbox.insert(tk.END, tag)
explanation_frame = ttk.Frame(frame)
explanation_frame.grid(row=2, column=0, padx=10)
explanation_label = ttk.Label(explanation_frame, text="执行说明:")
explanation_label.pack(anchor="w")
explanation_text = tk.Text(explanation_frame, height=3, wrap="word")
explanation_text.pack(fill=tk.BOTH, padx=5)
def on_select(event):
selected_index = listbox.curselection()
if selected_index:
explanation_text.delete("1.0", tk.END)
explanation_text.insert(tk.END, tags[selected_index[0]][1])
listbox.bind("<<ListboxSelect>>", on_select)
listbox.bind("<Double-Button-1>", submit)
# button = ttk.Button(frame, text="确定", command=submit) # 不需要点击确定
# button.grid(row=3, column=0, pady=10)
root.mainloop()
将用户选择的mark作为变量,传入pytest运行参数中
pytest.main([ '-m',mark,******])
效果展示:选择标记后,执行对应的测试脚本