Just a thought, but ...
The mechanics here is functional, but you could emphasize the logic more by insisting on (for example) (A > B) == (B <= A).
So then you could use just 3 answer dictionaries + re-use the results dictionaries in a 'negated form', something like ...
```
def _expects_not(expects_dict):
    return {key: not value if isinstance(value, bool) else value
            for key, value in expects_dict.iteritems()}

_eq_expects = {
    'no_difference': True, 'item1_lo': False, 'item1_hi': False,
    'item2_lo': False, 'item2_hi': False, 'item3_lo': False,
    'item3_hi': False, 'mix_hi_lo': False, 'mix_lo_hi': False,
    'null': True, 'pdt_same': True, 'pdt_diff': False,
    'pdt_diff_fewer': False, 'pdt_diff_more': False,
    'pdt_empty': False}

class Test___eq__(tests.IrisTest, _Test_operator):
    def setUp(self):
        self.op = operator.eq
        self.expected_value = _eq_expects

class Test___ne__(tests.IrisTest, _Test_operator):
    def setUp(self):
        self.op = operator.ne
        self.expected_value = _expects_not(_eq_expects)

_gt_expects = {
 . . .
    }

class Test___gt__(tests.IrisTest, _Test_operator):
    def setUp(self):
        self.op = operator.gt
        self.expected_value = _gt_expects

class Test___le__(tests.IrisTest, _Test_operator):
    def setUp(self):
        self.op = operator.le
        self.expected_value = _expects_not(_gt_expects)
```

I suppose it's just a kind of DRY really. 
Your call !