Skip to main content

A testing framework working with Starlette TestClient.

Project description

LinearTest

A testing framework working with httpx.

Dependencies

python>=3.10
pydantic>=2.6.4
pyyaml>=6.0.1
httpx>=0.27.0

Installing

The package is published on https://pypi.org/lineartest.

Use pip or similar commands to install it:

pip install lineartest

Features

  • lineartest.schedule helps you run tests one-by-one in order, and the tests run later can retrieve the results from the tests run earlier.
  • lineartest.client helps you log the detail of a request and the response easily.

Example

from pydantic import BaseModel
from starlette.testclient import TestClient
from lineartest import LinearClient, schedule

# import your ASGI app here for testing
...

test_client = TestClient(app)
client = LinearClient(test_client)


# add `test_login` function to schedule
@schedule
def test_login(username, password):
    class Response(BaseModel):
        success: bool
        token: str

    # the parameters are the same as `TestClient`
    res = client.post('/login', data={
        'username': username,
        'password': password
    }, model=Response)  # use `model` parameter to specify a response model

    assert res.success
    return res.token    # the result will be stored by `schedule`

# add `test_resource` function to schedule
@schedule
def test_resource():
    # use `schedule.get` to retrieve history result
    token = schedule.get(test_login)

    class Response(BaseModel):
        success: bool

    res = client.get('/', headers={
        'Authorization': f'Bearer {token}'
    }, model=Response)

    assert res.success


# run the schedule
# you may pass positional or keyword arguments
schedule.run('username', password='password')

License

This project is licensed under the terms of the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lineartest-0.4.0.tar.gz (5.8 kB view hashes)

Uploaded Source

Built Distribution

lineartest-0.4.0-py3-none-any.whl (6.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page