有人知道功能测试 Python Tkinter 应用程序的好例子吗?
Posted
技术标签:
【中文标题】有人知道功能测试 Python Tkinter 应用程序的好例子吗?【英文标题】:Does anybody know of a good example of functional testing a Python Tkinter application? 【发布时间】:2013-12-12 06:06:06 【问题描述】:我找到了一个很棒的网站,它讨论了使用 IronPython 对 Python GUI 应用程序进行功能测试:http://www.voidspace.org.uk/python/articles/testing/,但我想使用 Tkinter,并且很难在库之间进行转换。
Michael 展示了 IronPython 的这个示例:
class FunctionalTest(TestCase):
def setUp(self):
self.mainForm = None
self._thread = Thread(ThreadStart(self.startMultiDoc))
self._thread.SetApartmentState(ApartmentState.STA)
self._thread.Start()
while self.mainForm is None:
Thread.CurrentThread.Join(100)
def invokeOnGUIThread(self, function):
return self.mainForm.Invoke(CallTarget0(function))
...我很难将其转化为如何连接到具有基本设置的基于 Tkinter 的应用程序:
from tkinter import *
from tkinter import ttk
root = Tk()
ttk.Button(root, text="Hello World").grid()
root.mainloop()
...我想你也想在第二个线程的主根对象上运行一个方法,但我没有看到与 mainForm.Invoke() 等效的方法。也许我想错了。也许以这种方式对 GUI 应用程序进行功能测试并不常见?
例子会很棒!
【问题讨论】:
相关:How do I run unittest on a Tkinter app? 【参考方案1】:所以要明确你想要一个工作的 tkinter 程序?如果你在这里做的话,我很抱歉浪费你的时间,因为我想念你的问题。这是我已经研究了一段时间的事情。它还没有完成。这是一个登录屏幕,最终将验证用户名和密码。
import tkinter
def Mainscreen():
def Validate():
with open('Users.txt', 'w') as fout:
fout.write("test")
def Quit():
window.destroy()
def Sighnup():
window2 = tkinter. Tk()
def Quit2 ():
window2.destroy()
def Sighnup():
with open('Users.txt', 'w') as fout:
fout.write(ent.get())
fout.write(ent2.get())
fout.write(ent3.get())
fout.write(ent4.get())
fout.write(ent5.get())
window2.destroy()
window2.geometry("195x135")
window2.title("Sighnup")
window2.wm_iconbitmap('favicon.ico')
lbl= tkinter.Label(window2, text="First Name:")
lbl2= tkinter.Label(window2, text="Last Name:")
lbl3= tkinter.Label(window2, text="Email:")
lbl4= tkinter.Label(window2, text="Username:")
lbl5= tkinter.Label(window2, text="Password:")
ent= tkinter.Entry(window2)
ent2= tkinter.Entry(window2)
ent3= tkinter.Entry(window2)
ent4= tkinter.Entry(window2)
ent5= tkinter.Entry(window2)
btn= tkinter.Button(window2, text="Submit", command=Sighnup) #command=Loginpostsighnup
btn2= tkinter.Button(window2, text="Quit", command=Quit2)
lbl.grid(row=0, column=0)
ent.grid(row=0, column=1)
lbl2.grid(row=1, column=0)
ent2.grid(row=1, column=1)
lbl3.grid(row=2, column=0)
ent3.grid(row=2, column=1)
lbl4.grid(row=3, column=0)
ent4.grid(row=3, column=1)
lbl5.grid(row=4, column=0)
ent5.grid(row=4, column=1)
btn2.grid(row=5, column=1)
btn.grid(row=5, column=0)
window2.mainloop()
window = tkinter. Tk()
window.geometry("195x135")
window.title("Login")
window.wm_iconbitmap('favicon.ico')
lbl6= tkinter.Label(window, text="Login:")
lbl7= tkinter.Label(window, text="Username:")
lbl8= tkinter.Label(window, text="Password:")
ent6= tkinter.Entry(window)
ent7= tkinter.Entry(window)
btn3= tkinter.Button(window, text="Login")
btn4= tkinter.Button(window, text="Sighn up", command=Sighnup)
btn5= tkinter.Button(window, text="Quit", command=Quit)
lbl6.grid(row=0, column=0)
lbl7.grid(row=1, column=0)
lbl8.grid(row=2, column=0)
ent6.grid(row=1, column=1)
ent7.grid(row=2, column=1)
btn3.grid(row=3, column=1)
btn4.grid(row=3, column=0)
btn5.grid(row=4, column=0)
#main
(Mainscreen())
【讨论】:
感谢您的回复!我的问题实际上是关于如何对 Tkinter 应用程序进行功能测试。 哦,IDK 怎么办,对不起以上是关于有人知道功能测试 Python Tkinter 应用程序的好例子吗?的主要内容,如果未能解决你的问题,请参考以下文章
带有 If Else 语句的 Python Tkinter 按钮