The Pyramid documentation recommends using WebTest for functional tests, but coming from the Zope world, zope.testbrowser is the more familiar tool for this job (and it seems a little more high-level than WebTest at first glance).
With the 3.11 release, zope.testbrowser gained out-of-the-box support for talking to WSGI applications (courtesy of wsgi_intercept), so herewith some corresponding example code to show the basic usage and setup. (This assumes you are using zope.testrunner or something else that supports its layers).
import unittest import zope.testbrowser.wsgi class MyAppLayer(zope.testbrowser.wsgi.Layer): def make_wsgi_app(self): from myapp import main return main({}) MY_APP_LAYER = MyAppLayer() class FunctionalTests(unittest.TestCase): layer = MY_APP_LAYER def test_root(self): browser = zope.testbrowser.wsgi.Browser() browser.open('http://localhost/') self.failUnless('Pyramid' in browser.contents)