def test_evaluate(context, expr, expected): assert expressions.evaluate(expr, context) == expected
def test_invalid_expression(context, expr): with pytest.raises(RuntimeExpressionError): expressions.evaluate(expr, context)
def test_random_expression(expr): try: expressions.evaluate(expr, context) except RuntimeExpressionError: pass
@given(expr=(st.text() | (st.lists(st.sampled_from([".", "}", "{", "$"]) | st.text()).map( "".join)))) def test_random_expression(expr): try: expressions.evaluate(expr, context) except RuntimeExpressionError: pass def test_non_json_serializable_body(endpoint, response): case = Case(endpoint, body={"a": b"content"}) context = expressions.ExpressionContext(response=response, case=case) with pytest.raises(RuntimeExpressionError, match="^The request body is not JSON-serializable$"): expressions.evaluate("$request.body", context=context) @pytest.mark.parametrize( "expr, expected", ( ("$url", [Token.variable("$url")]), ("foo", [Token.string("foo")]), ("foo1", [Token.string("foo1")]), ("{}", [Token.lbracket(), Token.rbracket()]), ("{foo}", [Token.lbracket(), Token.string("foo"), Token.rbracket()]), ("{$foo}", [Token.lbracket(), Token.variable("$foo"),