diff --git a/_pytest/python_api.py b/_pytest/python_api.py index 92eaa5bd5..521c3bc48 100644 --- a/_pytest/python_api.py +++ b/_pytest/python_api.py @@ -2,6 +2,7 @@ import math import sys import py +from six import binary_type, text_type from six.moves import zip, filterfalse from more_itertools.more import always_iterable @@ -584,11 +585,11 @@ def raises(expected_exception, *args, **kwargs): """ __tracebackhide__ = True - if not isclass(expected_exception) or not issubclass(expected_exception, BaseException): - for exc in filterfalse(isclass, always_iterable(expected_exception)): - msg = ("exceptions must be old-style classes or" - " derived from BaseException, not %s") - raise TypeError(msg % type(exc)) + base_type = (type, text_type, binary_type) + for exc in filterfalse(isclass, always_iterable(expected_exception, base_type)): + msg = ("exceptions must be old-style classes or" + " derived from BaseException, not %s") + raise TypeError(msg % type(exc)) message = "DID NOT RAISE {0}".format(expected_exception) match_expr = None