mirror of https://github.com/tiangolo/fastapi.git
✨ Implement __repr__ methods for path parameters to simplify debugging (#1560)
* repr description added to Depends class * repr description added to Security subclass * get rid of __repr__ in security since it will inherit from super * make code format consistent with rest * add desc for rest of the classes * Update fastapi/params.py remove trailing whitespace Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com> * Implement __repr__ * fix formatting * formatting again * ran formatting * added basic testing * basic tests added to rest of the classes * added more test coverage and simplified test file Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com> Co-authored-by: Jayati Shrivastava <gaurijove@gmail.com>
This commit is contained in:
parent
8231fbede4
commit
3699e17212
|
|
@ -51,6 +51,9 @@ class Param(FieldInfo):
|
|||
**extra,
|
||||
)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"{self.__class__.__name__}({self.default})"
|
||||
|
||||
|
||||
class Path(Param):
|
||||
in_ = ParamTypes.path
|
||||
|
|
@ -239,6 +242,9 @@ class Body(FieldInfo):
|
|||
**extra,
|
||||
)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"{self.__class__.__name__}({self.default})"
|
||||
|
||||
|
||||
class Form(Body):
|
||||
def __init__(
|
||||
|
|
@ -316,6 +322,11 @@ class Depends:
|
|||
self.dependency = dependency
|
||||
self.use_cache = use_cache
|
||||
|
||||
def __repr__(self) -> str:
|
||||
attr = getattr(self.dependency, "__name__", type(self.dependency).__name__)
|
||||
cache = "" if self.use_cache else ", use_cache=False"
|
||||
return f"{self.__class__.__name__}({attr}{cache})"
|
||||
|
||||
|
||||
class Security(Depends):
|
||||
def __init__(
|
||||
|
|
|
|||
|
|
@ -0,0 +1,46 @@
|
|||
import pytest
|
||||
from fastapi.params import Body, Cookie, Depends, Header, Param, Path, Query
|
||||
|
||||
test_data = ["teststr", None, ..., 1, []]
|
||||
|
||||
|
||||
def get_user():
|
||||
return {} # pragma: no cover
|
||||
|
||||
|
||||
@pytest.fixture(scope="function", params=test_data)
|
||||
def params(request):
|
||||
return request.param
|
||||
|
||||
|
||||
def test_param_repr(params):
|
||||
assert repr(Param(params)) == "Param(" + str(params) + ")"
|
||||
|
||||
|
||||
def test_path_repr(params):
|
||||
assert repr(Path(params)) == "Path(Ellipsis)"
|
||||
|
||||
|
||||
def test_query_repr(params):
|
||||
assert repr(Query(params)) == "Query(" + str(params) + ")"
|
||||
|
||||
|
||||
def test_header_repr(params):
|
||||
assert repr(Header(params)) == "Header(" + str(params) + ")"
|
||||
|
||||
|
||||
def test_cookie_repr(params):
|
||||
assert repr(Cookie(params)) == "Cookie(" + str(params) + ")"
|
||||
|
||||
|
||||
def test_body_repr(params):
|
||||
assert repr(Body(params)) == "Body(" + str(params) + ")"
|
||||
|
||||
|
||||
def test_depends_repr():
|
||||
assert repr(Depends()) == "Depends(NoneType)"
|
||||
assert repr(Depends(get_user)) == "Depends(get_user)"
|
||||
assert repr(Depends(use_cache=False)) == "Depends(NoneType, use_cache=False)"
|
||||
assert (
|
||||
repr(Depends(get_user, use_cache=False)) == "Depends(get_user, use_cache=False)"
|
||||
)
|
||||
Loading…
Reference in New Issue