导语

        之前基本完成了测试框架中驱动程序生成测试报告的功能(探索框架(七)),还可以在此基础上在加上生成bug报告和发送邮件的功能,本次主要是记录复选框的用法,以及如何处理控件质检的关联性。

一、需求分析

        针对之前设计的可以生成CSV形式的测试报告的功能,既然是自定义的测试报告,便可以提取出其中的失败用例情况,形成bug报告,还可以将相对应功能的bug报告以邮件方式,发送给相关人员,原型如下图所示:


python实现word文档 修改复选框 python 勾选复选框_python

图1 原型图

         只有选中“生成csv形式的测试报告”,才能显示“生成bug报告”复选框,默认不选中,只有勾选了“生成bug报告”复选框,才会显示“发送bug报告”复选框,默认不显示。

二、画界面

        方法与之前的一样,复选框使用wx.CheckBox,先定义复选框,代码如下:

# 测试框架界面类的实现
class testframe_UI():
    # 初始化方法定义界面窗体控件及容器
    def __init__(self):
        ......
        # 定义复选框“bug报告”
        self.bug_checkbox = wx.CheckBox(self.panel, label="生成bug报告")
        # 定义复选框“发送bug报告”
        self.email_checkbox = wx.CheckBox(self.panel, label="发送bug报告")
        ......

        接着定义控件布局,既然是在之前的基础上做修改,那么就将“生成csv形式的测试报告”与“生成bug报告”作为一组,“发送bug报告”最为一组,“生成html形式的测试报告”作为一组,改动较为交单,代码如下:

# 测试框架界面类的实现
class testframe_UI():
    # 初始化方法定义界面窗体控件及容器
    def __init__(self):
    ......

    # 定义控件布局
    def lauout_UI(self):
        # 定义水平放置的boxsizer1,用于存放标签文字、文件文本框、打开按钮
        boxsizer1 = wx.BoxSizer()
        # 把相关控件加到boxsizer中
        boxsizer1.Add(self.file_lab, flag=wx.ALL, border=10)
        boxsizer1.Add(self.file_txt, proportion=2, flag=wx.TOP | wx.DOWN, border=10)
        boxsizer1.Add(self.open_but, flag=wx.ALL, border=10)

        # 定义水平放置的boxsizer2,用于存放csv单选按钮和bug报告复选框
        boxsizer2 = wx.BoxSizer()
        boxsizer2.Add(self.csv_radiobut, flag=wx.DOWN | wx.TOP, border=10)
        boxsizer2.Add(self.bug_checkbox, flag=wx.LEFT | wx.TOP, border=10)

        # 定义水平放置的boxsizer3,用于存放发送bug报告复选框
        boxsizer3 = wx.BoxSizer()
        boxsizer3.Add(self.email_checkbox )

        # 定义水平放置的boxsizer4,用于存放html单选按钮
        boxsizer4 = wx.BoxSizer()
        boxsizer4.Add(self.html_radiobut)

        这样就可以运行调试一下了,看画出来的效果是否如预期,没问题以后再去进行下一步。

三、控件联动

        如果选中“生成csv形式的测试报告”,则显示“生成bug报告”,选择其他则不显示,而不选中“生成bug报告”,则不显示“发送bug报告”,需要给相应的控件加上绑定事件,代码如下:

# 测试框架界面类的实现
class testframe_UI():
    # 初始化方法定义界面窗体控件及容器
    def __init__(self):
    # 定义控件布局
    def lauout_UI(self):
    ......

    # 定义按钮事件
    def but_event(self):
        ......
        self.html_radiobut.Bind(wx.EVT_RADIOBUTTON, self.hide_bugchk)
        self.bug_checkbox.Bind(wx.EVT_CHECKBOX, self.show_email)

    # 定义显示、隐藏发送bug报告方法
    def show_email(self, event):
        if self.bug_checkbox.GetValue() == 1:
            self.email_checkbox.Show(True)
        else:
            self.email_checkbox.Show(False)

    # 定义显示复选框方法
    def show_bugchk(self, event):
        if self.csv_radiobut.GetValue() == 1:
            self.bug_checkbox.Show(True)

    # 定义隐藏复选框方法
    def hide_bugchk(self, event):
        if self.html_radiobut.GetValue() == 1:
            self.bug_checkbox.SetValue(0)
            self.bug_checkbox.Show(False)
            self.email_checkbox.Show(False)

        这时可以运行调试一下,不选中“生成bug报告”时样式如下:


python实现word文档 修改复选框 python 勾选复选框_ui_02

图2 不选中“生成bug报告”

         看起来没有什么问题,然后选中“生成bug报告”,样式就不对了,如下图:


python实现word文档 修改复选框 python 勾选复选框_复选框_03

图3 选中“生成bug报告”

         这是因为如果默认不显示“发送bug报告”控件以后,原本给它画的位置会被回收,这时候可以加上一个属性wx.RESERVE_SPACE_EVEN_IF_HIDDEN,即使不显示,也给他保留相应的位置,代码如下:

# 定义水平放置的boxsizer3,用于存放发送bug报告复选框
        boxsizer3 = wx.BoxSizer()
        boxsizer3.Add(self.email_checkbox, flag=wx.LEFT|wx.RESERVE_SPACE_EVEN_IF_HIDDEN, border=200)

        加上这个属性以后,就可以正确显示了,关于间距的问题就自行微调即可。

        这样基本上就完成了界面的设计,关于“生成bug报告”的功能与生成CSV形式的测试报告的功能完成过程基本相似,核心方法也是通过测试脚本运行后,将相关失败用例的结果写入临时文件中,再去读取临时文件的内容,写入bug报告中,基本上依葫芦画瓢即可,就不再多加描述,关于发送邮件的功能下一期总结。