diff --git a/testing/testing_helpers.py b/testing/testing_helpers.py
index 097275a..70c40fd 100644
--- a/testing/testing_helpers.py
+++ b/testing/testing_helpers.py
@@ -1,7 +1,6 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
+# Copyright 2016 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
 
 """Helpers for testing."""
 from __future__ import print_function
@@ -9,15 +8,15 @@
 from __future__ import absolute_import
 
 import email
+from six.moves import urllib
 
 from framework import emailfmt
 from framework import framework_bizobj
-from proto import user_pb2
+from mrproto import user_pb2
 from services import service_manager
 from services import template_svc
 from testing import fake
 from tracker import tracker_constants
-import webapp2
 
 DEFAULT_HOST = '127.0.0.1'
 
@@ -71,7 +70,7 @@
 
 
 def GetRequestObjects(
-    headers=None, path='/', params=None, payload=None, user_info=None,
+    headers=None, path='/', params=None, user_info=None,
     project=None, method='GET', perms=None, services=None, hotlist=None):
   """Make fake request and MonorailRequest objects for testing.
 
@@ -98,9 +97,7 @@
 
   headers.setdefault('Host', DEFAULT_HOST)
   post_items=None
-  if method == 'POST' and payload:
-    post_items = payload
-  elif method == 'POST' and params:
+  if method == 'POST' and params:
     post_items = params
 
   if not services:
@@ -112,7 +109,7 @@
     services.project.TestAddProject('proj')
     services.features.TestAddHotlist('hotlist')
 
-  request = webapp2.Request.blank(path, headers=headers, POST=post_items)
+  request = RequestStub(path, headers=headers, values=post_items)
   mr = fake.MonorailRequest(
       services, user_info=user_info, project=project, perms=perms,
       params=params, hotlist=hotlist)
@@ -122,6 +119,33 @@
   return request, mr
 
 
+class RequestStub(object):
+  """flask.Request stub object.
+
+  This stub is a drop-in replacement for flask.Request that implements all
+  fields used in MonorailRequest.ParseRequest(). Its constructor API is
+  designed to mimic webapp2.Request.blank() for backwards compatibility with
+  existing unit tests previously written for webapp2.
+  """
+
+  def __init__(self, path, headers=None, values=None):
+    self.scheme = 'http'
+    self.path = path
+    self.headers = headers or {}
+    # webapp2.Request.blank() overrides the host from the request headers.
+    self.host = self.headers.get('Host', 'localhost:80')
+    self.host_url = self.scheme + '://' + self.host + '/'
+    self.url = self.scheme + '://' + self.host + path
+
+    parsed_url = urllib.parse.urlsplit(self.url)
+    self.base_url = self.host_url + parsed_url.path  # No query string.
+
+    self.values = values or {}
+    # webapp2.Request.blank() parses the query string from the path.
+    query = urllib.parse.parse_qs(parsed_url.query, True)
+    self.values.update({key: value[0] for key, value in query.items()})
+
+
 class Blank(object):
   """Simple class that assigns all named args to attributes.
 
