ayon-core/tests
Petr Kalis b8ce6e9e9c
Photoshop: add autocreators for review and flat image (#4871)
* OP-5656 - added auto creator for review in PS

Review instance should be togglable.
Review instance needs to be created for non publisher based workflows.

* OP-5656 - refactored names

* OP-5656 - refactored names

* OP-5656 - new auto creator for flat image

In old version flat image was created if no instances were created. Explicit auto creator added for clarity.

Standardization of state of plugins

* OP-5656 - updated according to auto image creator

Subset template should be used from autocreator and not be separate.

* OP-5656 - fix proper creator name

* OP-5656 - fix log message

* OP-5656 - fix use enable state

* OP-5656 - fix formatting

* OP-5656 - add review toggle to image instance

For special cases where each image should have separate review.

* OP-5656 - fix description

* OP-5656 - fix not present asset and task in instance context

* OP-5656 - refactor - both auto creators should use same class

Provided separate description.

* OP-5656 - fix - propagate review to families

Image and auto image could have now review flag.
Bottom logic is only for Webpublisher.

* OP-5656 - fix - rename review files to avaid collision

Image family produces jpg and png, jpg review would clash with name. It should be replaced by 'jpg_jpg'.

* OP-5656 - fix - limit additional auto created only on WP

In artist based publishing auto image would be created by auto creator (if enabled). Artist might want to disable image creation.

* OP-5656 - added mark_for_review flag to Publish tab

* OP-5656 - fixes for auto creator

* OP-5656 - fixe - outputDef not needed

outputDef should contain dict of output definition. In PS it doesn't make sense as it has separate extract_review without output definitions.

* OP-5656 - added persistency of changes to auto creators

Changes as enabling/disabling, changing review flag should persist.

* OP-5656 - added documentation for admins

* OP-5656 - added link to new documentation for admins

* OP-5656 - Hound

* OP-5656 - Hound

* OP-5656 - fix shared families list

* OP-5656 - added default variant for review and workfile creator

For workfile Main was default variant, "" was for review.

* OP-5656 - fix - use values from Settings

* OP-5656 - fix - use original name of review for main review family

outputName cannot be in repre or file would have ..._jpg.jpg

* OP-5656 - refactor - standardized settings

Active by default denotes if created instance is active (eg. publishable) when created.

* OP-5656 - fixes for skipping collecting auto_image

data["ids"] are necessary for extracting. Members are physical layers in image, ids are "virtual" items, won't get grouped into real image instance.

* OP-5656 - reworked auto collectors

This allows to use automatic test for proper testing.

* OP-5656 - added automatic tests

* OP-5656 - fixes for auto collectors

* OP-5656 - removed unnecessary collector

Logic moved to auto collectors.

* OP-5656 - Hound
2023-05-02 11:19:50 +02:00
..
integration Photoshop: add autocreators for review and flat image (#4871) 2023-05-02 11:19:50 +02:00
lib Added setup_only to tests (#4591) 2023-03-13 15:37:23 +01:00
resources Merge fixes for tests from branch with Deadline tests. 2022-12-02 15:52:04 +01:00
unit adding test routine for the slate condition 2023-04-20 21:49:58 +02:00
__init__.py #1784 - added base implementation for helper DB class 2021-07-07 18:51:55 +02:00
conftest.py Added setup_only to tests (#4591) 2023-03-13 15:37:23 +01:00
README.md Merge fixes for tests from branch with Deadline tests. 2022-12-02 15:52:04 +01:00

Automatic tests for OpenPype

Requirements:

Tests are recreating fresh DB for each run, so mongorestore, mongodump and mongoimport command line tools must be installed and on Path.

You can find intallers here: https://www.mongodb.com/docs/database-tools/installation/installation/

You can test that mongorestore is available by running this in console, or cmd: mongorestore --version

Structure:

  • integration - end to end tests, slow (see README.md in the integration folder for more info)
    • openpype/modules/MODULE_NAME - structure follow directory structure in code base
      • fixture - sample data (MongoDB dumps, test files etc.)
      • tests.py - single or more pytest files for MODULE_NAME
  • unit - quick unit test
    • MODULE_NAME
      • fixture
      • tests.py

How to run:

  • use Openpype command 'runtests' from command line (.venv in ${OPENPYPE_ROOT} must be activated to use configured Python!) -- python ${OPENPYPE_ROOT}/start.py runtests

By default, this command will run all tests in ${OPENPYPE_ROOT}/tests.

Specific location could be provided to this command as an argument, either as absolute path, or relative path to ${OPENPYPE_ROOT}. (eg. python ${OPENPYPE_ROOT}/start.py start.py runtests ../tests/integration) will trigger only tests in integration folder.

See ${OPENPYPE_ROOT}/cli.py:runtests for other arguments.

Run in IDE:

If you prefer to run/debug single file directly in IDE of your choice, you might encounter issues with imports. It would manifest like KeyError: 'OPENPYPE_DATABASE_NAME'. That means you are importing module that depends on OP to be running, eg. all expected variables are set.

In some cases your tests might be so localized, that you don't care about all env vars to be set properly. In that case you might add this dummy configuration BEFORE any imports in your test file

import os
os.environ["AVALON_MONGO"] = "mongodb://localhost:27017"
os.environ["OPENPYPE_MONGO"] = "mongodb://localhost:27017"
os.environ["AVALON_DB"] = "avalon"
os.environ["OPENPYPE_DATABASE_NAME"] = "openpype"
os.environ["AVALON_TIMEOUT"] = '3000'
os.environ["OPENPYPE_DEBUG"] = "3"
os.environ["AVALON_CONFIG"] = "pype"
os.environ["AVALON_ASSET"] = "Asset"
os.environ["AVALON_PROJECT"] = "test_project"

(AVALON_ASSET and AVALON_PROJECT values should exist in your environment)

This might be enough to run your test file separately. Do not commit this skeleton though. Use only when you know what you are doing!