ghandic / jsf

Creates fake JSON files from a JSON schema
https://ghandic.github.io/jsf
Other
165 stars 36 forks source link
commandline faker fastapi jsf json-schema property-based-testing python

jsf

Coverage Docs PyPI Latest Release
License Code style: black

Use jsf along with fake data generators to provide consistent and meaningful fake data for your system.

Main Features

Installation

```console $ pip install jsf ---> 100% ```

Usage

Basic 😊

from jsf import JSF

faker = JSF(
    {
        "type": "object",
        "properties": {
            "name": {"type": "string", "$provider": "faker.name"},
            "email": {"type": "string", "$provider": "faker.email"},
        },
        "required": ["name", "email"],
    }
)

fake_json = faker.generate()

Results in ...

{
    'name': 'Jesse Phillips', 
    'email': 'xroberson@hotmail.com'
}

From JSON file 📁

from jsf import JSF

faker = JSF.from_json("demo-schema.json")
fake_json = faker.generate()
Or run straight from the commandline... #### Native install ```bash pip install jsf[cli] jsf --schema jsf/tests/data/custom.json --instance wow.json ``` #### Docker ```bash docker run -v $PWD:/data challisa/jsf jsf --schema /data/custom.json --instance /data/example.json ```

FastAPI Integration 🚀

Create a file main.py with:

from jsf import JSF
from fastapi import FastAPI

app = FastAPI(docs_url="/")
generator = JSF.from_json("custom.json")

@app.get("/generate", response_model=generator.pydantic())
def read_root():
    return generator.generate()

Run the server with:

```console $ uvicorn main:app --reload INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [28720] INFO: Started server process [28722] INFO: Waiting for application startup. INFO: Application startup complete. ``` Navigate to [http://127.0.0.1:8000](http://127.0.0.1:8000) and check out your endpoint. Notice the following are all automatically created: - Schema with descriptions and examples - Example response - Data generation by clicking "try it out" ![Example Swagger UI - Page 1](docs/assets/imgs/ui-1.png) ![Example Swagger UI - Page 2](docs/assets/imgs/ui-2.png) ![Example Swagger UI - Page 3](docs/assets/imgs/ui-3.png) ![Example Swagger UI - Page 4](docs/assets/imgs/ui-4.png)

Partially supported features

Credits

License