有人知道功能测试 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 应用程序的好例子吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Tkinter 和 Python 提升图像

tkinter python 入口高度

带有 If Else 语句的 Python Tkinter 按钮

Python中使用tkinter创建透明图层不规则组件插入GIF动图等功能实现

pyqt tkinter哪个好用

带有Tkinter的输入和输出小组件