Testing#
Asset Validator comes with two classes to help you test your Rules.
ValidationTestCaseMixin: A mixin for test cases to simplify testing of individual Validation Rules.
AsyncioValidationTestCaseMixin: A mixin for asyncio test cases to simplify testing of individual Validation Rules.
ValidationTestCaseMixin#
You could mix ValidationTestCaseMixin with TestCase as follows:
from omni.asset_validator.tests import ValidationTestCaseMixin
from unittest import TestCase
class ValidationTestCase(TestCase, ValidationTestCaseMixin): ...
An example to implement a test case would look like:
class RuleTest(ValidationTestCase):
def test_rule(self):
self.assertSuccess(
asset=get_url("pass.usda"),
rule=MyRule,
)
self.assertFailure(
asset=get_url("fail.usda"),
rule=MyRule,
)
AsyncioValidationTestCaseMixin#
You could mix AsyncioValidationTestCaseMixin with IsolatedAsyncioTestCase as follows:
from omni.asset_validator.tests import AsyncioValidationTestCaseMixin
from unittest import IsolatedAsyncioTestCase
class AsyncioValidationTestCase(IsolatedAsyncioTestCase, AsyncioValidationTestCaseMixin): ...
An example to implement a test case would look like:
class RuleTest(AsyncioValidationTestCase):
async def test_rule(self):
await self.assertSuccessAsync(
asset=get_url("pass.usda"),
rule=MyRule,
)
await self.assertFailureAsync(
asset=get_url("fail.usda"),
rule=MyRule,
)
Assertions#
Additionally you could verify for specific issues, for example:
class RuleTest(AsyncioValidationTestCase):
async def test_rule(self):
await self.assertRuleAsync(
asset=get_url("fail.usda"),
rule=MyRule,
asserts=[
IsAFailure("Invalid condition")
]
)
IsAFailure can match to multiple attributes, like message, rule, requirement, location, etc
Fixes#
class RuleTest(AsyncioValidationTestCase):
async def test_rule(self):
await self.assertSuggestionAsync(
asset=get_url("fail.usda"),
rule=MyRule,
)