Skip to content

Commit

Permalink
Using decorators for comprehensive testing
Browse files Browse the repository at this point in the history
Jussi in his comment here:
#1391 (comment)
proposed using decorators when creating comprehensive testing
for metadata serialization.
The main problems he pointed out is that:
1) there is a lot of code needed to generate the data for each case
2) the test implementation scales badly when you want to add new
cases for your tests, then you would have to add code as well
3) the dictionary format is not visible - we are loading external files
and assuming they are not changed and valid

In this change, I am using a decorator with an argument that complicates
the implementation of the decorator and requires three nested functions,
but the advantages are that we are resolving the above three problems:
1) we don't need new code when adding a new test case
2) a small amount of hardcoded data is required for each new test
3) the dictionaries are all in the test module without the need of
creating new directories and copying data.

Signed-off-by: Martin Vrachev <mvrachev@vmware.com>
  • Loading branch information
MVrachev committed Jun 9, 2021
1 parent 2779954 commit 071622c
Show file tree
Hide file tree
Showing 2 changed files with 166 additions and 219 deletions.
4 changes: 2 additions & 2 deletions tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ def test_key_class(self):
test_key_dict = key_dict.copy()
del test_key_dict[key]
with self.assertRaises(KeyError):
Key.from_dict(test_key_dict)
Key.from_dict("id", test_key_dict)


def test_role_class(self):
Expand All @@ -357,7 +357,7 @@ def test_role_class(self):
test_role_dict = role_dict.copy()
del test_role_dict[role_attr]
with self.assertRaises(KeyError):
Key.from_dict(test_role_dict)
Role.from_dict(test_role_dict)


def test_metadata_root(self):
Expand Down
Loading

0 comments on commit 071622c

Please sign in to comment.