https://github.com/guligon90/vcx-solutions-challenge
Technical assessment for the position of full-stack web delevoper at VC-X Solutions.
https://github.com/guligon90/vcx-solutions-challenge
backend-webdevelopment data-structures oop python3
Last synced: about 1 month ago
JSON representation
Technical assessment for the position of full-stack web delevoper at VC-X Solutions.
- Host: GitHub
- URL: https://github.com/guligon90/vcx-solutions-challenge
- Owner: guligon90
- License: mit
- Created: 2021-05-01T04:06:22.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-06-18T01:23:40.000Z (about 3 years ago)
- Last Synced: 2025-03-06T01:39:17.808Z (over 1 year ago)
- Topics: backend-webdevelopment, data-structures, oop, python3
- Language: Python
- Homepage:
- Size: 261 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# VC-X Solutions Challenge
Avaliação técnica para a posição de full-stack engineer (Python) na VC-X Solutions.
## Escopo
O objetivo aqui é realizar a implementação de duas estruturas de dados clássicas: a [fila](https://en.wikipedia.org/wiki/Queue_(abstract_data_type)) e [pilha](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)), não utilizando outras
estruturas auxiliares, que sejam nativas da linguagem de programação em questão (eg. listas, tuplas, etc.). A
especificação e demais orientações acerca da execução do teste, submetidas pela empresa, podem ser conferidas [aqui](./resources/VCX_README.md).
## Preliminares
### Requisitos
O seu workspace já deve possuir instalados os seguintes ítems:
* [Git](https://git-scm.com/downloads) 2.25.1;
* [Python](https://www.python.org/downloads/release/python-385/) 3.8.5.
Em relação ao gerador de ambientes virtuais para Python, nesse projeto foi utilizado o [venv](https://docs.python.org/3.8/library/venv.html). Para instalá-lo, execute no terminal:
```bash
sudo apt-get install python3-venv
```
### Ambiente virtual
De modo a instalar o ambiente virtual do Python, e as dependências de projeto, executar no terminal:
```bash
python3 -m venv env \ # Instala ambiente virtual
&& source env/bin/activate \ # Ativa ambiente virtual localmente
&& pip install --upgrade pip --no-cache-dir \ # Instala e atualiza package manager, sem usar ~/.cache/pip
&& pip install -r requirements.txt --no-cache-dir # Instala dependências de projeto, sem usar ~/.cache/pip
```
## Testes unitários
Com o ambiente virtual e dependências instaladas, os testes unitários pode ser executados. Nesse projeto, o [pytest](https://docs.pytest.org/en/6.2.x/) está
sendo utilizado, pelo fato de o mesmo possuir uma verbosidade superior ao [unittest](https://docs.python.org/3/library/unittest.html), (na minha opinião). Assim, para executar
os testes e também gerar o relatório de cobertura, execute no terminal:
```bash
pytest --cov=src -vv src/tests/
```
Caso você queira só executar os testes unitários, com verbosidade:
```bash
pytest -vv
```
## Code linting
Concernindo padronização de código, o code linting nesse projeto está sendo feito mediante a utilização da ferramenta [prospector](http://prospector.landscape.io/en/master/),
que por sua vez converge vários outros analisadores de integridade de código (como [mypy](http://mypy-lang.org/) para análise estática de tipos e [mccabe](), para
aferição de [complexidade ciclomática](https://en.wikipedia.org/wiki/Cyclomatic_complexity#:~:text=Cyclomatic%20complexity%20is%20a%20software,in%201976.)).
Para rodar o code linting no código em Python, basta executar:
```bash
prospector
```
A saída deverá, no cenário em que nenhuma inconsistência é encontrada, será similar à:
