Skip to main content

GraphQL Client for Locust

Locust is a python performance test library. Locust supports http client out of the box. This library provides the GraphQL Client for Locust.

This GraphQL Client is based on Prisma's Simple GraphQL Client for Python (https://github.com/prisma/python-graphql-client)

API

class GraphQLClient:
 def execute(self, label, query, variables=None, type ='graphql'):

####Arguments

  • type = Locust Request Type. Default value is 'graphql'
  • label = Locust Name
  • query = GraphQL Query
  • variables = GraphQL Variables. Default value is None

Usage

from locust import HttpLocust, TaskSet, task
from locustgraphqlclient import GraphQLLocust


class UserBehavior(TaskSet):
    def on_start(self):
        """ on_start is called when a Locust start before any task is scheduled """
        self.login()

    def on_stop(self):
        """ on_stop is called when the TaskSet is stopping """
        self.logout()

    def login(self):
        query = '''
        mutation login($username: String!, $password: String!) {
          login(username: $username, password: $password) {
            access_token
          }
        }'''
        variables = {
            'username': 'gm',
            'password': 'centric8'
        }
        result = self.client.execute("login", query, variables)

        # Inject the Access Token in the Client, so subsequent requests can be made
        self.client.inject_token(result['data']['login']['access_token'])

    def logout(self):
        # Reset the Access Token in the Client, so no subsequent requests can be made
        self.client.inject_token('')

    @task(2)
    def index(self):
        query = '''
                    query products {
                      products {
                        id
                        name
                        image
                      }
                    }'''
        result = self.client.execute("products", query)

    @task(1)
    def profile(self):
        query = '''
                    query me {
                      me {
                        id
                        username
                        firstName
                        lastName                    
                      }
                    }'''
        result = self.client.execute("me", query)


class WebsiteUser(GraphQLLocust):
    task_set = UserBehavior
    min_wait = 5000
    max_wait = 9000

Release files for locust-graphql-client 0.3.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for locust-graphql-client 0.3.4
File Size Uploaded
locust-graphql-client-0.3.4.tar.gz 2.5 kB Details

Release files / locust-graphql-client-0.3.4.tar.gz

Download URL locust-graphql-client-0.3.4.tar.gz
Size 2.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b351c3e456b3739e442a34480df98b2de5838682486da4af59c021d1c62fc566
BLAKE2b-256 checksum
How to use checksums
fdf61c86dc0729e95106624b80cf6b2edb354261e3261386e4d61f6058731470
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.2

Release history Release notifications | RSS feed

This release

0.3.4 This release

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page