I have a function that performs a hierarchical clustering on a list of input vectors. The return value is the root element of an object hierarchy, where each object represents a cluster. I want to test the following things:

Does each cluster contain the correct elements (and maybe other properties as well)?
Does each cluster point to the correct children?
Does each cluster point to the correct parent?

I have two problems here. First, how do I specify the expected output in a readable format. Second, how do I write a test-assertion accepts isomorphic variants of the expected data I provide? Suppose one cluster in the expected hierarchy has two children, A and B. Now suppose that cluster is represented by an object with the properties child1 and child2. I do not care whether child1 corresponds to cluster A or B, just that it corresponds to one of them, and that child2 corresponds to the other. The solution should be somewhat general because I will write several tests with different input data.
Actually my main problem here is to find a way to specify the expected output in a readable and understandable way. Any suggestions?
It feels like there maybe some room for breaking your method into smaller pieces.  Ones focused on dealing with parsing input and formatting output, could be separate from the actual clustering logic.  This way tests around your clustering methods would be fewer and dealing with easily understood and testable data structures like dicts and lists.
Writing unittests for a function that returns a hierarchy of objects