Testing#
USD Validation NVIDIA 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 unittest import TestCase
from usd_validation_nvidia.tests import ValidationTestCaseMixin
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 unittest import IsolatedAsyncioTestCase
from usd_validation_nvidia.tests import AsyncioValidationTestCaseMixin
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,
)