python+GUI 进阶之搭建自动化测试框架(demo)

上一篇博客,针对【用户注册页面】测试需求,设计基于python+(GUI)的可批量生成测试数据的用户图形界面。

今天,我来尝试使用python+GUI 搭建一个自动化测试框架的demo

一. 主要实现目标

        测试人员只需要配置csv文件,在界面选择需要执行的csv文件,就可实现测试用例的运行,然后生成相关的测试报告,bug报告,以及将bug信息通过email方式发送给开发工程师。

二. 成果展示

2.1》页面展示图

python+GUI 进阶之搭建自动化测试框架(demo)_第1张图片

操作人员参考示意图:

python+GUI 进阶之搭建自动化测试框架(demo)_第2张图片

2.2》配置文件(config)说明

csv配置文件如下:

执行状态:执行状态=1  执行 ;执行状态=0  不执行;

执行顺序:根据执行顺序从小到大的顺序来进行python脚本的运行顺序

开发人员以及邮箱:方便将错误bug发送给对应的开发工程师邮箱

2.3》最终框架组成以及各模块之间关联关系:

驱动层(driver)从配置层(config)中读取配置内容,并执行相关的python测试用例脚本,将执行结果生成测试报告(testReport)和错误报告(bugReport),同时将bug信息通过email方式发送给相关开发工程师。

python+GUI 进阶之搭建自动化测试框架(demo)_第3张图片

注:黄色为组成模块,绿色为解释说明

三. 代码实现过程

3.1》GUI页面实现说明:页面内所有控件如下

python+GUI 进阶之搭建自动化测试框架(demo)_第4张图片

3.2》代码类图简设计:

python+GUI 进阶之搭建自动化测试框架(demo)_第5张图片

3.3》主要流程说明:

python+GUI 进阶之搭建自动化测试框架(demo)_第6张图片

 

3.4》遇到的问题总结

1) GUI  StaticText控件对字体大小的设置   

    解决方案:

self.stext_bz2 = wx.StaticText(self.panel, label="(注:仅针对使用unittest框架的测试用例")
# 字体颜色设置
self.stext_bz2.SetForegroundColour("red")
# 字体大小设置
font = wx.Font(8, wx.DECORATIVE, wx.ITALIC, wx.NORMAL)
# 指定哪一个控件的字体大小进行设置
self.stext_bz.SetFont(font)

2)list是多维数据组成,根据第二位内容进行排序

     解决方案:

#  第二个实验:list排序(根据第二个字段)
datalist=[]
datalist.append(['a',1])
datalist.append(['b',3])
datalist.append(['c',2])

# 获取列表的第二个元素
def takeSecond(elem):
    return elem[1]

# list.sort(key=takeSecond)
for i in datalist:
    print(i)

3) import wx    报错提示:DLL load failed: 找不到指定的模块

解决方案:

S1:卸载wxpython模块:pip uninstall wxPython

S2:重新安装wxpython模块:pip3 install -i https://pypi.douban.com/simple wxpython

4)如何在一个python文件中执行另一个python脚本文件

#第一个实验:在一个python文件执行另一个python

#第一种办法:通过os.system相当于在cmd命令行中执行python脚本
import os

path=str("python C:\\a_Python\Project\TestGUIFrame\script\Interface\\testA.py")
os.system(path)


#第二种办法:在当前python脚本内导入 待执行的文件类
from script.Interface.testA import classA

# 实例化classA
obj=classA()
obj.test_case1(2) 

四. 拓展出来的独立新功能

1)GUI_点击按钮,弹出文件框,选择文件

def function_OpenFile(self, event):
    # wildcard匹配通配符
    fileWindow = wx.FileDialog(self.panel, message="打开文件夹", wildcard="*.csv")
    if fileWindow.ShowModal() == wx.ID_OK:
        path = fileWindow.GetPath()
        if path != "":
            self.text_filePath.SetValue(path)

 

2)python脚本实现 _发送邮件

 def sendEmail(self,fromEmail,fromAuthCode,toEmail,subject,strcontent):
        # S1:用户登录
            # 设置邮箱SMTP 的服务器地址:QQ邮箱的SMTP地址是smtp.qq.com
        smtp=smtplib.SMTP("smtp.qq.com")
            # 设置发送人的邮箱和授权码(不能是邮箱的真正密码)
        smtp.login(fromEmail,fromAuthCode)
        print("登陆成功")

        # S2:编辑邮件内容
            # 设置邮件的正文内容,格式是html,utf-8 编码防止中文乱码
        content=MIMEText(strcontent,"html","utf-8")
            # 设置邮件的主题
        content["subject"]=Header(subject)
            # 发件人邮箱
        content["from"]=fromEmail
            # 收件人邮箱
        content["to"]=toEmail

        # S3:发送邮件
        smtp.sendmail(content["from"],content["to"],str(content))
        # S4:关闭邮件服务器
        smtp.close()

3)执行python脚本,并获取print结果内容(将print打印出来的内容当做参数传给另一个方法)

# 第三个实验:执行python脚本,并返回print结果内容
import os 
import ast

f=os.popen(r"python G:\Python\Project\TestGUIFrame\script\Interface\testA.py","r")
d = f.buffer.read().decode(encoding='utf8')  # 读文件
dlist=d.split("\r\n")
print(dlist)
# 获取字典倒数第二个内容
resultcount=dlist[-2]
# #string字符串转字典类型
result_dict=ast.literal_eval(resultcount)
print(result_dict)
f.close()

五.扩展

现在我已经拿到了bug内容,如果通过selenium在禅道上自动创建bug单,是不是也可以行得通?稍后我再试一下。

 

你可能感兴趣的:(python,GUI,自动化测试框架)