These are rough notes from whatever I was working on, interested in or thinking about at the time. They vary greatly in quality and length, but prove useful to me, and hopefully to you too!
pytest and functools decorator
If using a decorator created using
functools.wraps with pytest, it will give an error similar to the following if you attempt to use fixtures:
TypeError: test_func() takes exactly 1 argument (0 given).
A comment on the above stackoverflow answer (which is over 4 years old) states that pytest depends upon the decorator package. However as far as I can tell from looking at the current setup.py for pytest, it does not depend upon decorator. However using decorator still fixed the issue.
# Uses functools - *not* compatible with pytest :( import functools def my_decorator(some_arg): def deco(func): @functools.wraps(*args, **kwargs) def wrapper(*args, **kwargs) # do something with some_arg? ret = func(*args, **kwargs) # do something else? return ret return wrapper return deco
# Uses decorator - compatible with pytest :) import decorator def my_decorator(some_arg): def deco(func): def wrapper(func, *args, **kwargs): # do stuff with some_arg? ret = func(*args, **kwargs) # do something else? return ret return decorator.decorator(wrapper, func) return deco
from my_module.decorators import my_decorator @my_decorator(1234) def test_something(my_fixture): # do test