+ if int(groups[0]) == int(previous_groups[0]):
+ self.assertGreaterEqual(int(groups[1]), int(previous_groups[1]),
This checks that
int(groups[1]) >= int(previous_groups[1]) if int(groups[0]) == int(previous_groups[0])
whereas the previous version (with the int() fixed) checked that
int(groups[1]) >= (previous_groups[1]) or groups[0] != groups[1].
Was the previous check nonsensical apart from the wrong usage of int()?
Note that even the indexes you used are different (I haven't checked what those values actually are though).

> In other words, (int(groups[0]), int(groups[1])) >= (int(previous_groups[0]), int(previous_groups[1])).
Why not use a single self.assertGreaterEqual() on the pairs (with an appropriate change in the message)?
It currently hand-codes the lexicographic comparison, which seems an unnecessary complication (and may have increased the likelihood of error).

Techincally, converting to int is not necessary, because the number of digits in the unix timestamp doesn't change until year 2286 :)
The patch looks good to me. I don't think comparing pairs would be any more readable than what the proposed patch does.