Python,运行测试,如果失败则发送邮件

标签 python

我想运行测试,如果失败,请发送电子邮件。 请建议我可以使用任何传统框架(如 UnitTest)来执行此操作。我还没有找到一种方法来修改它失败时的行为。

最佳答案

您可以提供自己的 unittest.TestResult 实现来发送这样的电子邮件:

import smtplib
import unittest


def sendmail(from_who, to, msg):
    s = smtplib.SMTP('localhost')
    s.sendmail(from_who, [to], msg)
    s.quit()


class MyTestResult(unittest.TestResult):
    def addError(self, test, err):
        self.super(MyTestResult, self).addError(test, err)  
        err_desc = self._exc_info_to_string(err, test)
        sendmail(from_who, to, err_desc)

    def addFailure(self, test, err):
        self.super(MyTestResult, self).addFailure(test, err)
        err_desc = self._exc_info_to_string(err, test)
        sendmail(from_who, to, err_desc)


if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromModule()    
    results = MyTestResult()
    suite.run(results)

关于Python,运行测试,如果失败则发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21457665/

相关文章:

python - 从有限的 CSV 列集读取并作为行输出到特定的 JSON 模式

python - 如何使 Sprite 沿着pygame中的曲线移动到点

python - Django 1.9 在列表中查找属性等于某个值的对象

python - 评估 scikit learn 中 SGD 分类器的收敛性

python - 树hackerrank解决错误的故事

python - 为什么使用 Python 的 os 模块方法而不是直接执行 shell 命令?

python - 将 DataFrame 中的列分为 10 个百分位数

Python如何在类内部进行多处理?

python - 如何用另一个数据框中的 3 个值替换每个单词

python - 如何在图 block map 上进行运动?