Python+unittest发送测试报告

案例将E:\Python_script\unittest\Test_Baidu生成的最新测试报告发送到指定邮箱。

我们将之前的unittest的报告生成和Python自动发送邮件结合在一起,就可以完成自动发送最新报告到指定邮箱的操作。

代码示例:

runtest_email.py

import unittest
from BSTestRunner import BSTestRunner
import time
import smtplib                         # 发送邮件模块
from email.mime.text import MIMEText   # 定义邮件内容
from email.header import Header        # 定义邮件标题
import os


def send_mail(latest_report):
    f = open(latest_report, 'rb')
    mail_content = f.read()
    f.close()
    smtpserver = 'smtp.163.com'
    # 发送邮箱用户名密码
    user = 'nancyrm2018@163.com'
    password = '输入自己的密码'
    # 发送和接收邮箱
    sender = 'nancyrm2018@163.com'
    receivers = ['nancyrm2018@126.com', '88886666@qq.com']
    # 发送邮件主题和内容
    subject = "Web Selenium 自动化测试报告"
    # HTML邮件正文
    msg = MIMEText(mail_content, 'html', 'utf-8')
    msg['Subject'] = Header(subject, 'utf-8')
    msg['From'] = sender
    msg['To'] = ','.join(receivers)

    smtp = smtplib.SMTP_SSL(smtpserver, 465)
    # HELO 向服务器标识用户身份
    smtp.helo(smtpserver)
    # 服务器返回结果确认
    smtp.ehlo(smtpserver)
    # 登录邮箱服务器用户名和密码
    smtp.login(user, password)

    print("Send email start...")
    smtp.sendmail(sender, receivers, msg.as_string())
    smtp.quit()
    print("Email send end!")


def latest_report(report_dir):
    lists = os.listdir(report_dir)
    print(lists)
    # 按时间顺序对该目录文件夹下面的文件进行排序
    lists.sort(key=lambda fn: os.path.getatime(report_dir + "\\" + fn))
    print("The latest report is:" + lists[-1])

    file = os.path.join(report_dir, lists[-1])
    print(file)
    return file

if __name__ == '__main__':
    report_dir = './test_report'
    test_dir = './test_case'

    discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
    now = time.strftime("%Y-%m-%d %H_%M_%S")
    report_name = report_dir + '/' + now + 'result.html'
    with open(report_name, "wb") as f:
        runner = BSTestRunner(stream=f, title='测试报告', description='用例执行情况:')
        runner.run(discover)
        f.close()

    # h获取最新测试报告
    latest_report = latest_report(report_dir)
    # 发送邮件报告
    send_mail(latest_report)

代码分析:
可以将代码分为3个部分来理解:

  1. 通过unittest框架的discovery()找到匹配测试用例,由HTMLTestRunner 的run()方法执行测试用例并生成最新的测试报告
  2. 调用new_report()函数找到测试报告目录(test_report)下最新生成的测试报告,返回测试报告的路径
  3. 将得到的最新测试报告的完整路径传给send_mail()函数,实现发邮件功能

代码实现:

 

 

转载于:https://www.cnblogs.com/NancyRM/p/8565797.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
unittestPython 自带的一个单元测试框架,可以用来测试代码中的函数、类等单元。而 excl 则是一个 Python 的 HTTP 客户端库,可以用来进行接口测试。 下面是一个使用 unittest 和 excl 进行接口测试的示例: ```python import unittest import excl class TestApi(unittest.TestCase): def setUp(self): self.client = excl.Client('http://example.com/api') def test_get_user(self): response = self.client.get('/users/1') self.assertEqual(response.status_code, 200) self.assertEqual(response.json()['name'], 'Alice') def test_create_user(self): user_data = {'name': 'Bob', 'email': 'bob@example.com'} response = self.client.post('/users', json=user_data) self.assertEqual(response.status_code, 201) self.assertEqual(response.json()['name'], 'Bob') self.assertEqual(response.json()['email'], 'bob@example.com') if __name__ == '__main__': unittest.main() ``` 在这个示例中,我们首先定义了一个 TestApi 类,继承自 unittest.TestCase。在 setUp 方法中,我们创建了一个 excl 客户端,用于发送 HTTP 请求。然后我们分别定义了两个测试函数,一个测试 GET 请求,一个测试 POST 请求。在测试函数中,我们发送 HTTP 请求并检查响应状态码和返回的 JSON 数据是否符合预期。最后,在 if __name__ == '__main__': 中运行测试。 这个示例只是一个简单的例子,实际中可能需要更多的测试用例和更复杂的测试逻辑。但是通过 unittest 和 excl 的配合,可以方便地进行接口测试,并保证代码的质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值