diff options
author | 2020-05-10 14:38:12 -0700 | |
---|---|---|
committer | 2020-05-11 12:03:10 -0700 | |
commit | 0bfd003dbfc5919220129f984dc043421e535f8c (patch) | |
tree | d8184932ec2afd69155597fb6c8352552a48d6cd /tests | |
parent | Test on_message_edit of token remover uses on_message (diff) |
Add a test helper function to patch multiple attributes with autospecs
This helper reduces redundancy/boilerplate by setting default values.
It also has the consequence of shortening the length of the invocation,
which makes it faster to use and easier to read.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/helpers.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/helpers.py b/tests/helpers.py index 2b79a6c2a..d444cc49d 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -23,6 +23,15 @@ for logger in logging.Logger.manager.loggerDict.values(): logger.setLevel(logging.CRITICAL) +def autospec(target, *attributes: str, **kwargs) -> unittest.mock._patch: + """Patch multiple `attributes` of a `target` with autospecced mocks and `spec_set` as True.""" + # Caller's kwargs should take priority and overwrite the defaults. + kwargs = {'spec_set': True, 'autospec': True, **kwargs} + attributes = {attribute: unittest.mock.DEFAULT for attribute in attributes} + + return unittest.mock.patch.multiple(target, **attributes, **kwargs) + + class HashableMixin(discord.mixins.EqualityComparable): """ Mixin that provides similar hashing and equality functionality as discord.py's `Hashable` mixin. |