memgraph/tests/gql_behave/steps/test_parameters.py
2021-10-26 08:53:56 +02:00

81 lines
2.5 KiB
Python

# Copyright 2021 Memgraph Ltd.
#
# Use of this software is governed by the Business Source License
# included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
# License, and you may not use this file except in compliance with the Business Source License.
#
# As of the Change Date specified in that file, in accordance with
# the Business Source License, use of this software will be governed
# by the Apache License, Version 2.0, included in the file
# licenses/APL.txt.
# -*- coding: utf-8 -*-
import yaml
class TestParameters:
"""
Class used to store parameters from a cucumber test.
"""
def __init__(self):
"""
Constructor initializes parameters to empty dict.
"""
self.parameters = dict()
def set_parameters_from_table(self, table):
"""
Method gets table, parses parameters and sets them
in self.parameters.
@param self:
Class instance.
@param table:
behave.model.Table, table of unparsed parameters
from behave.runner.Context.
"""
par = dict()
for row in table:
par[row[0]] = self.parse_parameters(row[1])
if isinstance(par[row[0]], str) and par[row[0]].startswith("'") \
and par[row[0]].endswith("'"):
par[row[0]] = par[row[0]][1:len(par[row[0]]) - 1]
par[table.headings[0]] = self.parse_parameters(table.headings[1])
if isinstance(par[table.headings[0]], str) and \
par[table.headings[0]].startswith("'") and \
par[table.headings[0]].endswith("'"):
par[table.headings[0]] = \
par[table.headings[0]][1:len(par[table.headings[0]]) - 1]
self.parameters = par
def get_parameters(self):
"""
Method returns parameters.
@param self:
Instance of a class.
return:
Dictionary of parameters.
"""
return self.parameters
def parse_parameters(self, val):
"""
Method used for parsing parameters given in a cucumber test table
to a readable format for a database.
Integers are parsed to int values, floats to float values, bools
to bool values, null to None and structures are recursively
parsed and returned.
@param val:
String that needs to be parsed.
@return:
Format readable for a database.
"""
return yaml.load(val)