Testing blob support in 3rd party packages ========================================== Blob support is not totally transparent. Class names change and adapters and subscribers must be added for plone.app.blob. Also some packages that do content introspection, like a number of p4a packages, use non public methods of File objects that are not available on blob objects. In both cases, it makes sense to test your 3rd party package with plone.app.blob Case 1, no internal api methods are in use ========================================== That one is easy, just use one of the Testlayers provided by plone.app.blob. Using or basing on the BlobReplacementLayer ensures that both images and files will use blob objects Case 2, internal api methods are in use ======================================= The ZODB that is used in Plone 3 does not have blob support for their DemoStorage. But DemoStorage will be used during tests. plone.app.blob provides a monkey patch, that must be applied early on. That monkey patch will modify behaviour for all tests. The patch changes set up, so the patch must be loaded before the first tests are run. For example, in the head of the test file itself. The patch is loaded with a simple import:: from plone.app.blob.tests import db But if you use internal methods, you must test the behaviour with blobs and files. Currently the only way to do this, is to use two test runners, where the tests for file like objects do not import the monkey patch. An Example of how to do that can be seen here: http://dev.plone.org/collective/browser/p4a/p4a.ploneaudio/branches/blob_support/buildout.cfg The code that tests blob functionality is in a file that starts not with test. That way, the test runner won't try to load that file, and the monkey patch isn't loaded either. By providing a test file pattern for the second testrunner, we take care that he runs the blob related tests.