Example #1
0
 def extract_jsonpath(self, jsonpath_query, default=None):
     jsonpath_expr = jsonpath_parse(jsonpath_query)
     body = self.json()
     matches = jsonpath_expr.find(body)
     if not matches:
         return default
     return matches[0].value
Example #2
0
 def assert_not_jsonpath(self, jsonpath_query, msg=None):
     jsonpath_expr = jsonpath_parse(jsonpath_query)
     body = self.json()
     matches = jsonpath_expr.find(body)
     if matches:
         msg = msg or "JSONPath query %r did match response: %s" % (
             jsonpath_query, self.text[:BODY_LIMIT])
         raise AssertionError(msg)
     return self
Example #3
0
def jsonpath(path, resp):
    if isinstance(resp, str):
        data = json.loads(resp)
    else:
        data = resp.json()

    expr = jsonpath_parse(path)
    vals = [x.value for x in expr.find(data)]
    if vals:
        return random.choice(vals) if TAKE_RANDOM else vals[0]
    else:
        raise KeyError("jsonpath: No values found for %r" % path)
Example #4
0
def json_path(json_doc, path_query):
    try:
        j = json.loads(json_doc)
        parsed_query = jsonpath_parse(path_query)
        key_found = parsed_query.find(j)
        if key_found:
            return key_found[0].value
        else:
            return None
    except Exception as e:
        logging.error(f"json_path failed: {json_doc} path query: {path_query}")
        return None
Example #5
0
 def assert_jsonpath(self, jsonpath_query, expected_value=None, msg=None):
     jsonpath_expr = jsonpath_parse(jsonpath_query)
     body = self.json()
     matches = jsonpath_expr.find(body)
     if not matches:
         msg = msg or "JSONPath query %r didn't match response: %s" % (
             jsonpath_query, self.text[:BODY_LIMIT])
         raise AssertionError(msg)
     actual_value = matches[0].value
     if expected_value is not None and actual_value != expected_value:
         tmpl = "Actual value at JSONPath query (%r) isn't equal to expected (%r)"
         msg = msg or tmpl % (actual_value, expected_value)
         raise AssertionError(msg)
     return self
Example #6
0
def apply_into_json(data, jpath, val):
    if jpath not in _JP_CACHE:
        _JP_CACHE[jpath] = jsonpath_parse(jpath)
    _JP_CACHE[jpath].update(data, val)
 def parse(jsonpath_str):
     """Parse the jsonpath."""
     return jsonpath_parse(jsonpath_str)
Example #8
0
def apply_into_json(data, jpath, val):
    jsonpath_expr = jsonpath_parse(jpath)
    jsonpath_expr.update(data, val)