ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python接口自动化测试(第七篇)

2019-06-28 14:48:47  阅读:314  来源: 互联网

标签:测试报告 get python self py 接口 第七篇 report data


qq群:234922431
上一篇已经把框架给搭建起来了,但是没测试报告的自动化,是没有灵魂的
这次主要增加功能如下:
1:增加测试报告,以Excel表格形式呈现
2:将测试报告以附件形式发送到邮箱

代码目录增加:report 文件用来存放测试报告文件
在这里插入图片描述
开始做第一步:增加测试报告,以Excel表格形式呈现
第一步:修改utlis.py文件
修改Excel类,引入:
import xlsxwriter
增加如下代码:首先获得写入Excel的实例,接下来就开始操作Excel表格了
在这里插入图片描述

获取到实例后,增加写入报告的功能

    def write(self, data, sheet_name):
        # 设置报告格式
        sheet = self.workbook.add_worksheet(sheet_name)
        # 每行的宽度
        sheet.set_column('A:Q', 15)
     
        cell_format = self.workbook.add_format({'bold': True})
        sheet.set_row(0, 20, cell_format)
        # 红色
        red = self.workbook.add_format({'bg_color': 'red', 'color': 'white'})
        # 绿色
        green = self.workbook.add_format(
            {'bg_color': 'green', 'color': 'white'})
        # 写入测试报告中
        for i in range(len(data)):
            for j in range(len(data[i])):
                # 进行用例结果的背景颜色更改 不同状态的用例 不同颜色
                if str(data[i][j]) == 'Fail':
                    sheet.write(i, j, str(data[i][j]), red)
                elif str(data[i][j]) == 'Pass':
                    sheet.write(i, j, str(data[i][j]), green)
                else:
                    sheet.write(i, j, str(data[i][j]))

#关闭只有关闭后,文件才会生成,不然一直是写入的状态

    def close(self):
        try:
            self.workbook.close()
        except:
            raise Exception('Error: Permission denied')

data.py里面需要将测试报告的数据进行重组,在data.py下面增加如下代码

"""
    1.数据重组成list
    2.拼接测试报告内容
    3.返回结果
"""
    def testsuite2data(data):
        header_custom = {'id': '用例编号', 'title': '用例标题', 'testdot': '测试功能点', 'step': '测试步骤',
                         'keyword': '操作', 'page': '页面', 'element': '元素', 'data': '测试数据', 'expected': '预期结果',
                         'output': '输出数据',
                         'designer': '设计者', 'score': '步骤结果',
                         'remark': '备注'}
        report_header = {
            '用例编号': 'id',
            '用例标题': 'title',
            '测试功能点': 'testdot',
            '测试步骤': 'step',
            '操作': 'keyword',
            '页面': 'page',
            '元素': 'element',
            '测试数据': 'data',
            '输出数据': 'output',
            '预期结果': 'expected',
            '设计者': 'designer',
            '步骤结果': 'score',
            '备注': 'remark',
        }
        result = [[header_custom[key.lower()] for key in report_header.values()]]
     
        for d in data:
            # 这里是用例的第一行部分
            s = d['steps'][0]  # 第一步和用例标题同一行 16
            # 使用get方式获取取不到值会使用默认值,不会报错
            testcase = [d.get('id', 'id'), d.get('title', 'title'), d.get('testdot', 'testdot'), s.get('no', 'no'),
                        s.get('_keyword', '_keyword'), s.get('page', 'page'), s.get('_element', '_element'),
                        s.get('data', 'data'),
                        s.get('output', 'output'),
                        s.get('expected', 'expected'), d.get('designer', 'designer'), s.get('score', 'score'),
                        d.get('remark', 'remark')]
            result.append(testcase)
            # 这里是测试步骤
            for s in d['steps'][1:]:
                step = ['', '', s.get('testdot', 'testdot'), s.get('no', 'no'), s.get('_keyword', '_keyword'),
                        s.get('page', 'page'), s.get('_element', '_element'), s.get('data', 'data'),
                        s.get('output', 'output'),
                        s.get('expected', 'expected'),
                        d.get('designer', 'designer'), s.get('score', 'score'), '']
     
                result.append(step)
        return result;

 

准备工作一切就绪了,接下来在autotest调用生成测试报告的方法,并且将数据传入进去

在autotest.py的

def __init__(self, parmars):

#获取到写入测试报告的实例

    report_file = str(Path('report') / ('1911api' + '-' + 'report' + '' + '.xlsx'))
    self.report_workbook = Excel('w', report_file)

autotest.py增加代码如下 记得将testsuite2data函数,引入下:

from control.data import testsuite2data

    # 创建测试报告
    def crateport(self):
        data = testsuite2data(self.result_testuite)
        self.report_workbook.write(data, 'repost_data')
        # 写一次就关一次
        self.report_workbook.close()

 

在play函数里面调用一下

1.运行试一把

2.运行试一把

3.运行试一把

重要的事情说三遍

接下来看结果
在这里插入图片描述
在这里插入图片描述

看到测试报告已经生了

这次主要在autotest.py里面进行增加功能,前面的铺垫都是在为此准备呀~~~

目前项目结构是这样的

打开autotest.py

第一步:将下列的包引入:

    from email.mime.application import MIMEApplication
    import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart

在autotest.py里面__init__函数里面增加邮件相关配置:
在这里插入图片描述
增加sedEmail函数,并将邮件发送到自己的邮箱内:

    def sedEmail(self):
        # 发送邮箱到测试报告
        # 构造一个邮件体:正文 附件
        msg = MIMEMultipart()
        msg['Subject'] = self.subject  # 主题
        msg['From'] = self.send_user  # 发件人
        msg['To'] = self.receive_users  # 收件人
     
        # 构建正文
        part_text = MIMEText(self.email_text)
        msg.attach(part_text)  # 把正文加到邮件体里面去
     
        # 构建邮件附件
        # file = file           #获取文件路径
        part_attach1 = MIMEApplication(open(self.report, 'rb').read())  # 打开附件
        part_attach1.add_header('Content-Disposition', 'attachment', filename='1911api-report.xlsx')  # 为附件命名
        msg.attach(part_attach1)  # 添加附件
     
        # 发送邮件 SMTP
        smtp = smtplib.SMTP(self.server_address, 25)  # 连接服务器,SMTP_SSL是安全传输
        # smtp.set_debuglevel(1)
        smtp.login(self.send_user, self.password)
        smtp.sendmail(self.send_user, self.receive_users, msg.as_string())  # 发送邮件
        print('邮件发送成功~~~~~~~~~~~~')

因为发送邮件的功能,这次咱们需要在httpstart.py里面调用一下

将这个注释掉的方法打开
在这里插入图片描述
1.运行试一下

2.运行试一下

3.运行试一下

打开邮箱,看是否收到了邮件

已经收到邮件了

https://download.csdn.net/download/zhangmeng1314/11255512源码下载地址

标签:测试报告,get,python,self,py,接口,第七篇,report,data
来源: https://blog.csdn.net/zhangmeng1314/article/details/94001263

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有