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

92 lines
2.4 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 json
import logging
import sys
from steps.test_parameters import TestParameters
from neo4j import GraphDatabase, basic_auth
# Helper class and functions
class TestResults:
def __init__(self):
self.total = 0
self.passed = 0
def num_passed(self):
return self.passed
def num_total(self):
return self.total
def add_test(self, status):
if status == "passed":
self.passed += 1
self.total += 1
# Behave specific functions
def before_all(context):
# logging
logging.basicConfig(level="DEBUG")
context.log = logging.getLogger(__name__)
# driver
uri = "bolt://{}:{}".format(context.config.db_host,
context.config.db_port)
auth_token = basic_auth(
context.config.db_user, context.config.db_pass)
context.driver = GraphDatabase.driver(uri, auth=auth_token,
encrypted=False)
# test results
context.test_results = TestResults()
def before_scenario(context, scenario):
context.test_parameters = TestParameters()
context.exception = None
def after_scenario(context, scenario):
context.test_results.add_test(scenario.status)
if context.config.single_scenario or \
(context.config.single_fail and scenario.status == "failed"):
print("Press enter to continue")
sys.stdin.readline()
def after_feature(context, feature):
if context.config.single_feature:
print("Press enter to continue")
sys.stdin.readline()
def after_all(context):
context.driver.close()
if context.config.stats_file == "":
return
js = {
"total": context.test_results.num_total(),
"passed": context.test_results.num_passed(),
"test_suite": context.config.test_suite,
}
with open(context.config.stats_file, 'w') as f:
json.dump(js, f)