Unit testing und mocking E-Mail-Absender in Python mit Google AppEngine

Ich bin ein Neuling auf python und Google app engine.

Habe ich diesen code, der sendet eine E-Mail basierend auf request-params-nach einigen auth Logik. in meinen Unit-tests (ich bin mit GAEUnit), wie bestätige ich eine E-Mail mit bestimmten Inhalt gesendet wurden? - also wie kann ich verspotte die emailer mit einem fake-emailer, um zu überprüfen, senden Sie hieß?

class EmailHandler(webapp.RequestHandler):
 def bad_input(self):
  self.response.set_status(400)
  self.response.headers['Content-Type'] = 'text/plain'
  self.response.out.write("<html><body>bad input </body></html>")

 def get(self):
  to_addr = self.request.get("to")
  subj = self.request.get("subject")
  msg = self.request.get("body")
  if not mail.is_email_valid(to_addr):
    # Return an error message...
    #   self.bad_input()
    pass

  # authenticate here

  message = mail.EmailMessage()
  message.sender = "[email protected]"
  message.to = to_addr
  message.subject = subj
  message.body = msg
  message.send()
  self.response.headers['Content-Type'] = 'text/plain'
  self.response.out.write("<html><body>success!</body></html>")

Und die unit-tests,

import unittest
from webtest import TestApp
from google.appengine.ext import webapp
from email import EmailHandler

class SendingEmails(unittest.TestCase):

  def setUp(self):
    self.application = webapp.WSGIApplication([('/', EmailHandler)], debug=True)

  def test_success(self):
    app = TestApp(self.application)
    response = app.get('http://localhost:8080/[email protected]&body=blah_blah_blah&subject=mySubject')
    self.assertEqual('200 OK', response.status)
    self.assertTrue('success' in response)
    # somehow, assert email was sent 
  • Danke für den link zu GAEUnit. Ich war für so etwas suchen.
InformationsquelleAutor CVertex | 2009-01-09
Schreibe einen Kommentar