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

Via*_*lav 5 python

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

Gab*_*iMe 5

您可以提供自己的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)
Run Code Online (Sandbox Code Playgroud)