I've created a pretty cool package for automated property-based testing called quickcheck.wl, you pass three arguments to the function: the name of you property, the actual property (must be an equation, inequation or anything that yields a boolean value like a logical operator) and some assumptions.
QuickCheck[
"Conjugating a complex flips the imaginary sign",
Conjugate[a] == Re[b] + -1 Im[b] I,
"Assume" -> {a -> \[CapitalTau]ComplexInteger}
];

It will test the property by fuzzing the property symbolically. You can specify many types, currently, there are 18 types..

The function can have a few useful options, such as the exponent range of decimals and integers, and minimum-maximum sizes for lists and strings.
