pgadmin4/web/regression/testsuite.py
2016-04-17 10:39:08 -04:00

73 lines
2.0 KiB
Python

#############################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
##############################################################
""" This file collect all modules/files present in tests directory and add
them to TestSuite. """
import os
import sys
import unittest
from testscenarios.scenarios import generate_scenarios
# We need to include the root directory in sys.path to ensure that we can
# find everything we need when running in the standalone runtime.
current_path = os.path.dirname(os.path.realpath(__file__))
root = os.path.dirname(current_path)
if sys.path[0] != root:
sys.path.insert(0, root)
from pgadmin import create_app
# Create the app!
app = create_app()
# Disabling Cross-site request forgery(CSRF token) for testing purpose.
# CSRF prevent session against malicious Web site, or end users who wants to
# execute unwanted actions.
app.config['WTF_CSRF_ENABLED'] = False
from pgadmin.utils.route import TestsGeneratorRegistry
# Registry will load all the testcases/modules from pgadmin path those are
# register as BaseTestGenerator.
TestsGeneratorRegistry.load_generators('pgadmin')
# Create test client
# werkzeug provides a test client which gives a simple interface to the
# application. We can trigger test request to the application.
test_client = app.test_client()
def suite():
""" Defining test suite which will execute all the testcases present in
tests directory according to set priority."""
pgadmin_suite = unittest.TestSuite()
modules = []
for key, klass in TestsGeneratorRegistry.registry.items():
gen = klass
modules.insert(gen.priority, gen)
for m in modules:
obj = m()
obj.setTestClient(test_client)
scenario = generate_scenarios(obj)
pgadmin_suite.addTests(scenario)
return pgadmin_suite
if __name__ == '__main__':
suite = suite()
tests = unittest.TextTestRunner(descriptions=True, verbosity=2).run(suite)