ayon-core/tests/lib
2022-04-05 11:06:26 +02:00
..
__init__.py #1784 - added base implementation for helper DB class 2021-07-07 18:51:55 +02:00
assert_classes.py Updated assert message for comparing results 2022-04-05 11:06:26 +02:00
db_handler.py OP-2042 - better cleanup of test DBs before start of test 2021-12-10 13:48:12 +01:00
file_handler.py #1784 - fixing Hound, typos, run_tests command 2021-09-09 14:18:13 +02:00
README.md #1794 - fixes from review 2021-09-02 19:01:03 +02:00
testing_classes.py Added timeout to command line arguments 2022-02-16 18:08:15 +01:00

Automatic testing

Folder for libs and tooling for automatic testing.

  • db_handler.py - class for preparation of test DB

    • dumps DB(s) to BSON (mongodump)
    • loads dump(s) to new DB (mongorestore)
    • loads sql file(s) to DB (mongoimport)
    • deletes test DB
  • file_handler.py - class to download test data from GDrive

    • downloads data from (list) of files from GDrive
    • check file integrity with MD5 hash
    • unzips if zip
  • testing_wrapper.py - base class to use for testing

    • all env var necessary for running (OPENPYPE_MONGO ...)
    • implements reusable fixtures to:
      • load test data (uses file_handler)
      • prepare DB (uses db_handler)
      • modify temporarily env vars for testing

    Should be used as a skeleton to create new test cases.

Test data

Each class implementing TestCase can provide test file(s) by adding them to TEST_FILES ('GDRIVE_FILE_ID', 'ACTUAL_FILE_NAME', 'MD5HASH')

GDRIVE_FILE_ID can be pulled from shareable link from Google Drive app.

Currently it is expected that test file will be zip file with structure:

  • expected - expected files (not implemented yet)
  • input
    • data - test data (workfiles, images etc)

    • dumps - folder for BSON dumps from (mongodump)

    • env_vars env_vars.json - dictionary with environment variables {key:value}

    • json - json files to load with mongoimport (human readable)

Example

See tests\unit\openpype\modules\sync_server\test_site_operations.py for example usage of implemented classes.