Skip to main content

DB Database test automation. This package allows to create database object structure and load data from database.

Project description

db-autotest

DB Database test automation. This python package allows to create database object structure and load data from database.

One further option is to print, save data as YAML file, another is to use retrieved object in data comparissons or new database object creation.

DB structure as object in Python

Better explanation is code example from c_m_table.py.

class C_M_Table(object):

    def __init__(self):

        # ==================================== m_table ===============================
        self.t_m_table = M_Entity(m_object_detail(), m_object_detail_r(), name='table')
        
        # ==================================== m_object ===============================
        self.t_m_object = M_Entity(m_object(), m_object_r(), name='object')

        self.r_m_object_table = M_Relation(self.t_m_object, self.t_m_table)
        self.s_m_object = M_Structure(self.t_m_object, M_StructureType.PARENT)

        # ==================================== m_column ===============================
        self.t_m_column = M_Entity(m_column(), m_column_r(), name='column')
        self.t_m_column.sortFunc = columnSortFunc.__get__(self.t_m_column)

        self.r_m_table_column = M_Relation(self.t_m_table, self.t_m_column)
        self.s_m_column = M_Structure(self.t_m_column, M_StructureType.CHILD)

        # ==================================== m_index ===============================
        self.t_m_index = M_Entity(m_object_detail(), m_object_detail_r(), name='index')

        self.r_m_table_index = M_Relation(self.t_m_table, self.t_m_index)
        self.r_m_table_index.parent_ids = [m_object_detail().m_object_id, m_object_detail().m_version_id]
        self.r_m_table_index.child_ids = [m_object_detail().idx_table_id, m_object_detail().m_version_id]
        self.s_m_index = M_Structure(self.t_m_index, M_StructureType.CHILD)

        # ==================================== m_idx_column ===============================
        self.t_m_idx_column = M_Entity(m_column(), m_column_r(), name='idx_column')
        self.t_m_idx_column.sortFunc = columnSortFunc.__get__(self.t_m_idx_column)

        self.r_m_idx_column = M_Relation(self.t_m_index, self.t_m_idx_column)
        self.s_m_idx_column = M_Structure(self.t_m_idx_column, M_StructureType.CHILD)        
        self.s_m_index.child.append([self.s_m_idx_column, self.r_m_idx_column])

        # ==================================== s_m_table ===============================
        self.s_m_table = M_Structure(self.t_m_table)
        self.s_m_table.parent.append([self.s_m_object, self.r_m_object_table])
        self.s_m_table.child.append([self.s_m_column, self.r_m_table_column])
        self.s_m_table.child.append([self.s_m_index, self.r_m_table_index])

        self.c_main = M_Class(self.s_m_table)


def columnSortFunc(self, e):
    return e[get_column_i(self, m_column().sort)]

    

Output as YAML file

Output can be saved as YAML file test.yaml

table: {'m_object_detail_id': 4, 'm_object_id': 4, 'm_version_id': 1, 'idx_table_id': None, 'm_unique': 0, 'status': 'VALID', 'enabled': 1, 'droped': 0}

table_nodes: [

  p_object: {'m_object_id': 4, 'schema': 'db', 'name': 'm_column', 'type': 'TABLE', 'create_date': 1703982912},
  c_column: {'m_column_id': 11, 'm_object_detail_id': 4, 'm_column_obj_id': 24, 'sort': 0, 'type': 'INTEGER'},
  c_column: {'m_column_id': 12, 'm_object_detail_id': 4, 'm_column_obj_id': 25, 'sort': 1, 'type': 'INTEGER'},
  c_column: {'m_column_id': 13, 'm_object_detail_id': 4, 'm_column_obj_id': 26, 'sort': 2, 'type': 'INTEGER'},
  c_column: {'m_column_id': 14, 'm_object_detail_id': 4, 'm_column_obj_id': 27, 'sort': 3, 'type': 'INTEGER'},
  c_column: {'m_column_id': 15, 'm_object_detail_id': 4, 'm_column_obj_id': 22, 'sort': 4, 'type': 'TEXT'},
  c_index: {'m_object_detail_id': 10, 'm_object_id': 10, 'm_version_id': 1, 'idx_table_id': 4, 'm_unique': 1, 'status': 'VALID', 'enabled': 1, 'droped': 0},
  c_index_nodes: [
    c_idx_column: {'m_column_id': 31, 'm_object_detail_id': 10, 'm_column_obj_id': 25, 'sort': 0, 'type': None},
    c_idx_column: {'m_column_id': 32, 'm_object_detail_id': 10, 'm_column_obj_id': 26, 'sort': 1, 'type': None},
    c_idx_column: {'m_column_id': 33, 'm_object_detail_id': 10, 'm_column_obj_id': 27, 'sort': 2, 'type': None}
  ],
  c_index: {'m_object_detail_id': 11, 'm_object_id': 11, 'm_version_id': 1, 'idx_table_id': 4, 'm_unique': 0, 'status': 'VALID', 'enabled': 1, 'droped': 0},
  c_index_nodes: [
    c_idx_column: {'m_column_id': 34, 'm_object_detail_id': 11, 'm_column_obj_id': 26, 'sort': 0, 'type': None}
  ]
]

More examples

More examples can be found in files c_m_table_names.py and test_names.yaml

Environment setup

Docs folder contains initial setup description and SQLite database for db metadata.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

db_autotest-0.0.2.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

db_autotest-0.0.2-py3-none-any.whl (26.2 kB view details)

Uploaded Python 3

File details

Details for the file db_autotest-0.0.2.tar.gz.

File metadata

  • Download URL: db_autotest-0.0.2.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for db_autotest-0.0.2.tar.gz
Algorithm Hash digest
SHA256 bc03cb016bfcfd7c258e6df4726e288d3fc13061119f53bd553e9d00d62d02a1
MD5 7e36160557a55c1172517a21237de470
BLAKE2b-256 445c20477af0f84540b168465c2539c12284d91693c4235359dbcb8f8dd734fb

See more details on using hashes here.

File details

Details for the file db_autotest-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: db_autotest-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 26.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for db_autotest-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8420189a80b9f9b0f8e121aa51b5475f435a5d81032a7602332c50e55ce10c54
MD5 f9a103b650a3fe9a71cf698977097faa
BLAKE2b-256 f56e9ba78af2eadf00e963933bf9d1d2b261267dbca8c6ac71659098c9307cd1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page