def visit_Assert(self, assert_):
if isinstance(assert_.test, ast.Tuple) and len(assert_.test.elts) >= <NUM_LIT:1>:<EOL><INDENT>from _pytest.warning_types import PytestWarning<EOL>import warnings<EOL>warnings.warn_explicit(<EOL>PytestWarning("<STR_LIT>"),<EOL>category=None,<EOL>filename=str(self.module_path),<EOL>lineno=assert_.lineno,<EOL>)<EOL><DEDENT>self.statements = []<EOL>self.variables = []<EOL>self.variable_counter = itertools.count()<EOL>self.stack = []<EOL>self.on_failure = []<EOL>self.push_format_context()<EOL>top_condition, explanation = self.visit(assert_.test)<EOL>if self.module_path is not None:<EOL><INDENT>self.statements.append(<EOL>self.warn_about_none_ast(<EOL>top_condition, module_path=self.module_path, lineno=assert_.lineno<EOL>)<EOL>)<EOL><DEDENT>body = self.on_failure<EOL>negation = ast.UnaryOp(ast.Not(), top_condition)<EOL>self.statements.append(ast.If(negation, body, []))<EOL>if assert_.msg:<EOL><INDENT>assertmsg = self.helper("<STR_LIT>", assert_.msg)<EOL>explanation = "<STR_LIT>" + explanation<EOL><DEDENT>else:<EOL><INDENT>assertmsg = ast.Str("<STR_LIT>")<EOL>explanation = "<STR_LIT>" + explanation<EOL><DEDENT>template = ast.BinOp(assertmsg, ast.Add(), ast.Str(explanation))<EOL>msg = self.pop_format_context(template)<EOL>fmt = self.helper("<STR_LIT>", msg)<EOL>err_name = ast.Name("<STR_LIT>", ast.Load())<EOL>exc = ast_Call(err_name, [fmt], [])<EOL>if sys.version_info[<NUM_LIT:0>] >= <NUM_LIT:3>:<EOL><INDENT>raise_ = ast.Raise(exc, None)<EOL><DEDENT>else:<EOL><INDENT>raise_ = ast.Raise(exc, None, None)<EOL><DEDENT>body.append(raise_)<EOL>if self.variables:<EOL><INDENT>variables = [ast.Name(name, ast.Store()) for name in self.variables]<EOL>clear = ast.Assign(variables, _NameConstant(None))<EOL>self.statements.append(clear)<EOL><DEDENT>for stmt in self.statements:<EOL><INDENT>set_location(stmt, assert_.lineno, assert_.col_offset)<EOL><DEDENT>return self.statements<EOL>
Return the AST statements to replace the ast.Assert instance.

        This rewrites the test of an assertion to provide
        intermediate values and replace it with an if statement which
        raises an assertion error with a detailed explanation in case
        the expression is false.