黑盒测试经典题:果汁销售机python实现

        有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。

        这个代码我找了很久居然没有找得到,简直难以理解,就花了一点时间用python写了出来,原理的话很多博客都有写,我就不再讲了,我可以分享几个我认为讲的不错的博主的文章。

        实验一 黑盒测试 - Arisf - 博客园 (cnblogs.com)

        (6条消息) 黑盒测试——自动饮料售货机_饮料自动售货机因果图_Starzkg的博客-CSDN博客w

        我这里实现的是较为简单的橙汁啤酒的那个贩卖机,因为有些急,UI写的并不是很好看,同时还有一个小bug没有解决,如果有大佬解决感激不尽!

        bug:在点击重重按钮后,thinker库中的radiobutton的选中效果的视觉效果无法消除(虽然其他的参数都可以成功重置)

        代码如下所示:

import tkinter as tk


class black_test():
    def __init__(self, my_window, window_name):
        self.my_window = my_window
        self.window_name = window_name
        self.button_money = None
        self.button_drink = None
        self.button_ensure = None
        self.button_restart = None
        self.drink = 0
        self.check = 0
        self.money_choose = None
        self.drink_choose = None
        self.money_value = 0
        self.drink_value = 0
        self.label_out = None
        self.text_out_var = None
        self.text_out = None
        self.text_check_var = None
        self.label_check = None
        self.text_check = None
        self.tips_var = None
        self.tips = None

    # 设置窗口
    def set_init_windows(self):
        self.my_window.title(self.window_name)
        # 窗口大小
        self.my_window.geometry('640x480+540+120')

        # button 一元
        self.money_choose = tk.IntVar()
        # 作用窗口, 按钮名,宽度, 单选参数,同为money_choose一组
        self.button_money = tk.Radiobutton(self.my_window, text="一元", width=10,
                                           variable=self.money_choose, value=1, command=self.set_money)
        # 设置位置
        self.button_money.grid(row=1, column=10)
        self.button_money = tk.Radiobutton(self.my_window, text="五角", width=10
                                           , variable=self.money_choose,value=2, command=self.set_money)
        self.button_money.grid(row=1, column=100)
        self.drink_choose = tk.IntVar()
        self.button_drink = tk.Radiobutton(self.my_window, text="啤酒", width=10,
                                           variable=self.drink_choose, value=1, command=self.set_drink)
        self.button_drink.grid(row=2, column=10)
        self.button_drink = tk.Radiobutton(self.my_window, text="橙汁", width=10,
                                           variable=self.drink_choose, value=2, command=self.set_drink)
        self.button_drink.grid(row=2, column=100)

        self.button_ensure = tk.Button(self.my_window, text="确定", width=10, command=self.Ensure)
        self.button_ensure.grid(row=3, column=10)
        self.button_restart = tk.Button(self.my_window, text="复位", width=10, command=self.Restart)
        self.button_restart.grid(row=3, column=100)

        # 通过置为StringVar来动态修改label中的字符文本
        self.text_out_var = tk.StringVar()
        self.label_out = tk.Label(self.my_window, text="请取饮料")
        self.label_out.grid(row=4, column=10)
        self.text_out = tk.Label(self.my_window, width=20, height=5, background='white',
                                 textvariable=self.text_out_var)
        self.text_out.grid(row=4, column=20)
        self.text_check_var = tk.StringVar()
        self.label_check = tk.Label(self.my_window, text="找零")
        self.label_check.grid(row=4,column=30)
        self.text_check = tk.Label(self.my_window, width=20, height=5, background='white',
                                   textvariable=self.text_check_var)
        self.text_check.grid(row=4, column=100)

        self.tips_var = tk.StringVar()
        self.tips = tk.Label(self.my_window, width=20, textvariable=self.tips_var)
        self.tips.grid(row=5,column=10)

    # 功能函数set_money
    def set_money(self):
        # 1-1元 2-0.5元
        self.tips_var.set(" ")
        if self.money_choose.get() == 1:
            self.money_value = 1
        if self.money_choose.get() == 2:
            self.money_value = 2

    # 功能函数set_drink
    def set_drink(self):
        # 1-啤酒 2-橙汁
        self.tips_var.set(" ")
        if self.drink_choose.get() == 1:
            self.drink_value = 1
        if self.drink_choose.get() == 2:
            self.drink_value = 2

    # 功能函数Ensure
    def Ensure(self):
        # 做好了选择才能确认
        if self.money_value != 0 and self.drink_value != 0:
            self.tips_var.set(" ")
            if self.drink_value == 1 and self.money_value == 1:
                self.text_out_var.set("请取走你的啤酒")
                self.text_check_var.set("找零0.5元")
            elif self.drink_value == 1 and self.money_value == 2:
                self.text_out_var.set("请取走你的啤酒")
                self.text_check_var.set("无需找零")
            elif self.drink_value == 2 and self.money_value == 1:
                self.text_out_var.set("请取走你的橙汁")
                self.text_check_var.set("找零0.5元")
            elif self.drink_value == 2 and self.money_value == 2:
                self.text_out_var.set("请取走你的橙汁")
                self.text_check_var.set("无需找零")

        else:
            self.tips_var.set("请完成选择再进行确认")

    # 功能函数set_drink
    def Restart(self):
        self.money_value = 0
        self.drink_value = 0
        self.tips_var.set(" ")
        self.text_out_var.set(" ")
        self.text_check_var.set("   ")


if __name__ == '__main__':
    # 实例化出一个父窗口
    window = tk.Tk()
    black_test_window = black_test(window, "给你好果汁吃")
    # 设置根窗口默认属性
    black_test_window.set_init_windows()
    window.mainloop()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值