'Assert that items in the library (`lib_items`) have different values
on the specified `fields` (and *only* on those fields), compared to
`items`.
An empty `fields` list results in asserting that no modifications have
been performed. `allowed` is a list of field changes that are ignored
(they may or may not have changed; the assertion doesn\'t care).'

def assertItemFieldsModified(self, library_items, items, fields=[], allowed=['path']):

    for (lib_item, item) in zip(library_items, items):
        diff_fields = [field for field in lib_item._fields if (lib_item[field] != item[field])]
        self.assertEqual(set(diff_fields).difference(allowed), set(fields))
