CVe*_*tex 5 python google-app-engine unit-testing mocking
我是python和app引擎的新手.
我有这个代码,在一些auth逻辑之后根据请求参数发送一封电子邮件.在我的单元测试中(我正在使用GAEUnit),如何确认发送了具有特定内容的电子邮件? - 即如何使用虚假的电子邮件模拟电子邮件以验证发送是否被调用?
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 = "my.company@gmail.com"
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>")
Run Code Online (Sandbox Code Playgroud)
单元测试,
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/send?to=vijay.santhanam@gmail.com&body=blah_blah_blah&subject=mySubject')
self.assertEqual('200 OK', response.status)
self.assertTrue('success' in response)
# somehow, assert email was sent
Run Code Online (Sandbox Code Playgroud)
非常简短的介绍提供了PyPI:MiniMock 1.0。这是一个非常小的建立模拟的库。
祝你好运!
| 归档时间: |
|
| 查看次数: |
9382 次 |
| 最近记录: |