Skip to main content

PYthon WebSocket Integration TESTing framework

Project description

Grid Smarter Cities

Build Status License: MIT PyPI

pywsitest

PYthon WebSocket Integration TESTing framework

A python API to assist with automated websocket integration testing

Installation

pip install pywsitest

Package contents

WSTest

WSTest is the main test running class in pywsitest. It currently has the following methods:

  • with_parameter: add a query parameter to the connection
  • with_response: add an expected response to the test runner
  • with_message: add a message for the test runner to send on connection
  • with_response_timeout: set the timeout in seconds for the test runner to wait for a response from the websocket
  • with_message_timeout: set the timeout in seconds for the test runner to wait while trying to send a message to the websocket
  • with_test_timeout: set the timeout in seconds for the test runner to run for
  • run: asyncronously run the test runner, sending all messages and listening for responses
  • is_complete: check whether all expected responses have been received and messages have been sent

WSResponse

WSResponse is a class to represent an expected response from the websocket

  • with_attribute: add an attribute to check an incoming response against
  • with_trigger: add a message to trigger when a response matching this instance has been received
  • is_match: check whether a received response matches the attributes of this instance

WSMessage

WSMessage is a class to represent a message to send to the websocket

  • with_attribute: add an attribute to the message to be sent to the websocket host

Examples

Testing a reponse with a body is received on connection to a websocket host:

from pywsitest import WSTest, WSResponse

ws_test = (
    WSTest("wss://example.com")
    .with_response(
        WSResponse()
        .with_attribute("body")
    )
)

await ws_test.run()

assert ws_test.is_complete()

Sending a message on connection to a websocket host:

from pywsitest import WSTest, WSMessage

ws_test = (
    WSTest("wss://example.com")
    .with_message(
        WSMessage()
        .with_attribute("body", "Hello, world!")
    )
)

await ws_test.run()

assert ws_test.is_complete()

Triggering a message to be sent when the following response is received:

{
    "body": {
        "message": "Hello, world!"
    }
}
from pywsitest import WSTest, WSResponse, WSMessage

ws_test = (
    WSTest("wss://example.com")
    .with_response(
        WSResponse()
        .with_attribute("body")
        .with_trigger(
            WSMessage()
            .with_attribute("body", "${body/message}")
        )
    )
)

await ws_test.run()

assert ws_test.is_complete()

Documentation

Users can get the docstring help by running:

from pywsitest import WSTest
help(WSTest.with_response)

Links

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

pywsitest-0.2.tar.gz (5.5 kB view hashes)

Uploaded Source

Built Distribution

pywsitest-0.2-py3-none-any.whl (7.7 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