allure-framework / allure-framework/allure-python

Provide a custom repr for function params in `@step` decorator

Abierto
#642 0 comentarios 0 reacciones 0 asignados Ver en GitHub
theme:pytest
Lenguaje dominante
Python
Estrellas
814
Forks
260
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

I have a function like:
```
@step
def foo(x: np.ndarray, y: Dict[str, np.ndarray]): ...
```
It is marked with `@step` decorator and my problem is that the output in the allure repo is too large. I see that the special case of `represnet` is here https://github.com/allure-framework/allure-python/blob/3c74fd540021f776be7b52f8078c9d34eee5c3b6/allure-python-commons/src/utils.py#L167

So I was wondering how to handle other objects like `np.ndarray` or `Dict[str, np.ndarray]`?

One way is to subclass `dict` and give a nice `repr` to it, but what with a single numpy array?Sublassing it just so it got a better `repr` for allure looks... excessive?

Can `@step` accept an additional argument that will explicitly tell it hot to handle `obj -> str` representation?

#### I'm submitting a ...
- [x ] feature request

#### What is the current behavior?

A long text output in the allure report for types like `np.ndarray` or `Dict[str, np.ndarray]` that have long `repr`.

#### What is the expected behavior?

Make `@step` that receives explicit formatter so I can write:

```
def _my_repr(x: np.ndarray, y: Dict[str, np.ndarray]):
return format_1(x), format_2(t) # <-- custom formatting code here

@step(formatter=_my_repr)
def foo(x: np.ndarray, y: Dict[str, np.ndarray]): ...
```

#### Please tell us about your environment:

allure-pytest==2.9.45
allure-python-commons==2.9.45
pytest==6.2.5

#### Other information

I am willing on implementing that feature conditional on the fact there is a way of accepting that change to the mainstream. Will you accept a PR that parametrize `@step` in such a way?

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comience con la lógica de representación de casos especiales en allure-python-commons/src/utils.py y siga cómo @step recopila los parámetros de las funciones. Defina cómo se debe aceptar y aplicar un formateador explícito a los parámetros y, a continuación, verifique que los arrays de numpy y los diccionarios produzcan la salida compacta solicitada sin cambiar el comportamiento predeterminado.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
numpy, python
Área
testing-qa
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.