Function that performs a test of whether a number is greater or less than some expected result
That's a very unconventional usage of the term "precision".  I think that "comparison" would be the appropriate word here.

The Test class is severely underdeveloped.  The constructor fails to construct a useful object.  Furthermore, representing the comparison as one of four magic strings is cryptic and unhelpful.  On top of that, the Test class doesn't even know how to execute its own test, forcing you to write a separate handle_non_exact_answer() function.

It's rather weird that handle_non_exact_answer() returns True or False to indicate whether the comparison was one of the four recognized magic strings.  I would consider an unrecognizable comparison as an error, and raise an exception — preferably when the Test is constructed, not when you try to perform the test.

Printing the "passed" or "failed" result limits the function's reusability.  It should return True or False instead, and let the caller decide what to do with the result.

The if-else chain is more idiomatically done using a dictionary lookup.

Your main() test isn't very effective.  You don't print the randomly chosen number, so it's hard to tell whether the results are correct.  Also, you've used test to mean two different things: the first test ("greater than 0"), and also the iteration variable (for test in tests: …), which is unnecessarily confusing.

Suggested solution

import operator
import random

class ComparisonTest:
    COMPARATORS = {
        'less': operator.lt,
        'more': operator.gt,
        'lesser': operator.le,
        'greater': operator.ge,
    }

    def __init__(self, comparison, threshold):
        try:
            self._func = lambda n: self.COMPARATORS[comparison](n, threshold)
        except KeyError:
            raise ValueError('Invalid comparison: {0}'.format(comparison))

    def __call__(self, n):
        return self._func(n)

def main():
    n = random.randint(-1, 1)
    print('n = {0}'.format(n))
    test0 = ComparisonTest('greater', 0)
    test1 = ComparisonTest('lesser', 0)
    test2 = ComparisonTest('more', 0)
    test3 = ComparisonTest('less', 0)
    for test in [test0, test1, test2, test3]:
        print("passed" if test(n) else "failed")

if __name__ == "__main__":
    main()


More compact implementation

Here's a more compact way to write ComparisonTest, using functools.partial().  (Use the same main() function as above.)

from functools import partial
import operator

def ComparisonTest(comparison, threshold):
    try:
        return partial({
            'less': operator.gt,  # Comparisons are intentionally reversed
            'more': operator.lt,
            'lesser': operator.ge,
            'greater': operator.le,
        }[comparison], threshold)
    except KeyError:
        raise ValueError('Invalid comparison: {0}'.format(comparison))