从接口自动化测试框架设计到开发(五)--case运行结果统计、发送邮件

1.case运行结果统计

#Run_Test.py# -*- coding: utf-8 -*-
# @Author: jiujiu
# @Date:   2020-03-04 16:30:31
# @Last Modified time: 2020-03-07 10:05:52
import sys
sys.path.append("G:/uni_test")
#添加当前过程的目录
import json
from base.run_method import RunMethod
from data.get_data import GetData
from data.depend_data import DependentData
class RunTest:
    def __init__(self):
        self.runmethod = RunMethod()
        self.data = GetData()
        pass_count = []
        fail_count = []
    #程序执行
    def go_on_run(self):
        res = None
        #如果有10行,循环遍历每一行,从0行开始
        rows_count = self.data.get_case_lines()
        #排除0行,从第1行开始
        for i in range(1,rows_count):
            is_run = self.data.get_is_run(i)
            if is_run:
                url = self.data.get_request_url(i)
                method = self.data.get_request_method(i)
                data = self.data.get_data_for_json(i)#传入行数
                # request_data = self.data.get_data_for_json(i)
                header = self.data.is_header(i)
                # print(i)
                depend_case = self.data.is_depend(i)
                # return res
                if depend_case != None:
                    self.depend_data = DependentData(depend_case)
                    #获取依赖的响应数据
                    depend_response_data = self.depend_data.get_data_for_key(i)
                    #获取依赖的key
                    depend_key = self.data.get_depend_field(i)
                    request_data[depend_key] = depend_response_data #更新值
                res = self.runmethod.run_main(method,url,data,header)
                print(i)
                print(res)
                if self.com_util.is_contain(expect,res):
                    self.data.write_result(i,‘pass‘)  #通过的case写入pass
                    pass_count.append(i)
                else:
                    self.data.write_result(i,res)#失败的case写入实际的返回结果
                    fail_count.append(i)
                print(pass_count)
                print(fail_count)
            # if is_run :
            #     res = self.runmethod.run_main(method,url,data,header)
            #     return res
            # else:
            #     return None
if __name__ == ‘__main__‘:
    run = RunTest()
    print(run.go_on_run())

2.发送邮件

首先设置邮箱第三方登录的授权码

#send_email.py# -*- coding: utf-8 -*-
# @Author: jiujiu
# @Date:   2020-03-07 09:45:20
# @Last Modified time: 2020-03-07 10:13:36
import smtplib
from email.mime.text import MIMEText

class SendEmail:
    global send_user
    global email_host
    global password
    password = "dajiujiu123"#不是邮箱的登录密码,是第三方登录的授权码
    email_host = "smtp.163.com"
    send_user = "[email protected]"
    def send_mail(self,user_list,sub,content):
        user = "jiujiu"+"<"+send_user+">"#发件人
        message = MIMEText(content,_subtype=‘plain‘,_charset=‘utf-8‘)#内容
        message[‘Subject‘] = sub #主题
        message[‘From‘] = user #发件人
        message[‘To‘] = ";".join(user_list)##收件人
        server = smtplib.SMTP()#创建邮箱服务
        server.connect(email_host)#连接服务
        server.login(send_user,password)#登录邮箱
        server.sendmail(user,user_list,message.as_string())#发送邮件
        server.close()#关闭邮箱服务
if __name__ == ‘__main__‘:
    send = SendEmail()
    user_list = [‘[email protected];‘]
    sub = "测试邮件"
    content = "这个是我们的第一封测试邮件"
    send.send_mail(user_list,sub,content)

运行结果:

扩展:发送带附件

#send_email.py # -*- coding: utf-8 -*-# @Author: jiujiu
# @Date:   2020-03-07 09:45:20
# @Last Modified time: 2020-03-07 11:29:36
import smtplib
from email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipart
class SendEmail:
    global send_user
    global email_host
    global password
    password = "dajiujiu123"#不是邮箱的登录密码,是第三方登录的授权码
    email_host = "smtp.163.com"
    send_user = "[email protected]"
    def send_mail(self,user_list,sub,content,attachment):
        user = "jiujiu"+"<"+send_user+">"#发件人
        # message = MIMEText(content,_subtype=‘plain‘,_charset=‘utf-8‘)#实例化一个
        message = MIMEMultipart()
        message[‘Subject‘] = sub #主题
        message[‘From‘] = user #发件人
        message[‘To‘] = ";".join(user_list)#收件人
        message.attach(MIMEText(content, ‘html‘, ‘utf-8‘))
        att = MIMEText(open(attachment, ‘rb‘).read(), ‘base64‘, ‘utf8‘)
        att["Content-Type"] = ‘application/octet-stream‘
        att["Content-Disposition"] = ‘attachment; filename="%s"‘ % attachment#更改附件名字可以这样写:filename=‘文件命名.后缀’
        message.attach(att)
        server = smtplib.SMTP()#创建邮箱服务
        server.connect(email_host)#连接服务
        server.login(send_user,password)#登录邮箱
        server.sendmail(user,user_list,message.as_string())#发送邮件
        server.close()#关闭邮箱服务
if __name__ == ‘__main__‘:
    send = SendEmail()
    user_list = [‘[email protected];‘]
    sub = "测试邮件"
    content = "这个是我们的第一封测试邮件"
    attachment = ‘xlrd_test.py‘    send.send_mail(user_list,sub,content,attachment)

运行结果:

3.统计结果+报告通知

原文地址:https://www.cnblogs.com/dydxw/p/12433443.html

时间: 2024-08-29 03:01:34

从接口自动化测试框架设计到开发(五)--case运行结果统计、发送邮件的相关文章

Python3简易接口自动化测试框架设计与实现 实例2

目录 1.开发环境 2.用到的模块 3.框架设计 ?3.1.流程 3.2.项目结构 5.日志打印 6.接口请求类封装 7.Excel数据读取 7.1.读取配置文件 7.1.编写Excel操作类 8.用例组装 9.用例运行结果校验 10.运行用例 11 .小结 1.开发环境 操作系统:Ubuntu18 开发工具:IDEA+PyCharm插件 Python版本:3.6 2.用到的模块 requests:用于发送请求 xlrd:操作Excel,组织测试用例 smtplib,email:发送测试报告 l

Python接口自动化测试从设计到开发

7.Excel数据读取 用例是放在Excel中的,用xlrd来读取数据,写数据需要用到xluntils,先安装: pip install xlrd pip install xluntils 7.1.读取配置文件 读取Excel数据,我们需要知道对应的行和列,列相对固定,在配置文件settings中定义,然后读取,行作为参数传入.conf/settings文件中的定义如下: [excel] case_no=0 case_name=1 is_run=2 case_level=3 case_heade

Python接口自动化测试框架实战 从设计到开发

第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的http\https请求包.如何模拟请求数据.过滤规则及修改响应数据.如何解决无法抓包问题        以及fiddler接口测试,让大家能应用好工具! 第3章 Requests常见方法实战运用本章重点讲解 get\post请求测试.接口测试中结果处理.上传\下载文件接口测试.请求中header及coo

Python 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)

目录 1.      写在前面 2.      开发环境 3.      大致流程 4.      框架简介 5.      运行结果展示 6.      文件与配置 7.      测试接口实例 n      1.登陆接口 n      2.支付密码更改接口 8.      数据库设计 9.      测试用例.测试数据准备 10.        模块与类.函数设计 11.        代码实现 a)         class congfighttp.ConfigHttp b)      

Python+requests+exce接口自动化测试框架

一.接口自动化测试框架 二.工程目录 三.Excel测试用例设计 四.基础数据base 封装post/get:runmethod.py #!/usr/bin/env python3 # -*-coding:utf-8-*- # __author__: hunter import requests import json class RunMain: def send_get(self, url, data): res = requests.get(url=url, params=data).js

基于Python接口自动化测试框架(初级篇)附源码

引言 很多人都知道,目前市场上很多自动化测试工具,比如:Jmeter,Postman,TestLink等,还有一些自动化测试平台,那为啥还要开发接口自动化测试框架呢?相同之处就不说了,先说一下工具的局限性: 1.测试数据不可控:    接口虽然是对业务逻辑.程序代码的测试,而实际上是对数据的测试,调用接口输入一批数据,通过断言代码验证接口返回的数据,整个过程围绕数据测试.    如果返回的数据不是固定的,是变化的,那么断言失败,就无法知道是接口程序错误引起的,还是数据变化引起的,所以就需要进行测

自动化测试框架设计要点

目前比较常见的自动化测试框架主要有3种:数据驱动框架.关键字驱动框架和混合型框架. 1.数据驱动框架(Data Driven Framework) 数据驱动最适合测试的业务逻辑固定不变的应用程序,只有测试数据会变化.通常测试数据会被配置在外部文件或数据库中. 2.关键字驱动框架(Keyword Driven Framework) 关键字驱动顾名思义,它提供了一系列通用的关键字,用户通过调用这些关键字并输入一些参数可以实现单个操作,比如,打开浏览器.打开某个网页.点击某个链接等等,然后通过组织这些

【python3+request】python3+requests接口自动化测试框架实例详解教程

转自:https://my.oschina.net/u/3041656/blog/820023 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是java语言,但对于一个学java,却在学python的我来说,觉得python比起java更简单些,所以,我决定自己写python的接口自动化测试框架,由于本人也是刚学习python,

python+requests接口自动化测试框架实例详解教程

转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是java语言,但对于一个学java,却在学python的我来说,觉得python比起java更简单些,所以,我决定自