Skip to main content

Lean Testing Python SDK

Project description

Lean Testing Python SDK

Python client for `Lean Testing API <https://leantesting.com/en/api-docs>`__

You can sign up for a Lean Testing account at https://leantesting.com.

Requirements

  • Python 3.0 or greater

Installation

You don’t need this source code unless you want to modify the package. If you just want to use the Lean Testing Python SDK, you should run:

pip install --upgrade leantesting

or

easy_install --upgrade leantesting

See http://www.pip-installer.org/en/latest/index.html for instructions on installing pip. If you are on a system with easy_install but not pip, you can use easy_install instead. If you’re not using virtualenv, you may have to prefix those commands with sudo. You can learn more about virtualenv at http://www.virtualenv.org/

To install from source, run:

python setup.py install

Usage

  • Including Lean Testing Python SDK

    from leantesting.Client import Client as LeanTestingClient
  • Creating a new instance

    LT = LeanTestingClient()

  • Get Current Token

    leantesting.getCurrentToken()
  • Attach New Token

    leantesting.attachToken('9ErdKZXpGPnvHuJ9di92eAFqrp14GKvfHMyclGGh')
  • Generate Authorization URL

    generatedURL = leantesting.auth.generateAuthLink(
        'DHxaSvtpl91Xos4vb7d0GKkXRu0GJxd5Rdha2HHx',
        'https://www.example.com/appurl/',
        'admin',
        'a3ahdh2iqhdasdasfdjahf26'
    )
    print( generatedURL )
  • Exchange Authorization Code For Access TOKEN

    token = leantesting.auth.exchangeAuthCode(
        'DHxaSvtpl91Xos4vb7d0GKkXRu0GJxd5Rdha2HHx',
        'DpOZxNbeL1arVbjUINoA9pOhgS8FNQsOkpE4CtXU',
        'authorization_code',
        'sOgY2DT47B2K0bqashnk0E6wUaYgbbspwdy9kGrk',
        'https://www.example.com/appurl/'
    )
    print( token )

  • Get User Information

    leantesting.user.getInformation()
  • Get User Organizations

    leantesting.user.organizations.all().toArray()

  • List All Projects

    leantesting.projects.all().toArray()
  • Create A New Project

    newProject = leantesting.projects.create({
        'name': 'Project135',
        'organization_id': 5779
    })
    print( newProject.data )
  • Retrieve An Existing Project

    leantesting.projects.find(3515).data
  • List Project Sections

    leantesting.projects.find(3515).sections.all().toArray()
  • Adding A Project Section

    newSection = leantesting.projects.find(3515).sections.create({
        'name': 'SectionName'
    })
    print( newSection.data )
  • List Project Versions

    leantesting.projects.find(3515).versions.all().toArray()
  • Adding A Project Version

    newVersion = leantesting.projects.find(3515).versions.create({
        'number': 'v0.3.1104'
    })
    print( newVersion.data )
  • List Project Users

    leantesting.projects.find(3515).users.all().toArray()
  • List Bug Type Scheme

    leantesting.projects.find(3515).bugTypeScheme.all().toArray()
  • List Bug Status Scheme

    leantesting.projects.find(3515).bugStatusScheme.all().toArray()
  • List Bug Severity Scheme

    leantesting.projects.find(3515).bugSeverityScheme.all().toArray()
  • List Bug Reproducibility Scheme

    leantesting.projects.find(3515).bugReproducibilityScheme.all().toArray()

  • List All Bugs In A Project

    leantesting.projects.find(3515).bugs.all().toArray()
  • Create A New Bug

    newBug = leantesting.projects.find(3515).bugs.create({
        'title': 'Something bad happened...',
        'status_id': 1,
        'severity_id': 2,
        'project_version_id': 10242
    })
    print( newBug.data )
  • Retrieve Existing Bug

    leantesting.bugs.find(38483).data
  • Update A Bug

    updatedBug = leantesting.bugs.update(118622, {
        'title': 'Updated title',
        'status_id': 1,
        'severity_id': 2,
        'project_version_id': 10242
    })
    print( updatedBug.data )
  • Delete A Bug

    leantesting.bugs.delete(118622)

  • List Bug Comments

    leantesting.bugs.find(38483).comments.all().toArray()

  • List Bug Attachments

    leantesting.bugs.find(38483).attachments.all().toArray()
  • Upload An Attachment

    filePath = '/place/Downloads/Images/1370240743_2294218.jpg'
    newAttachment = leantesting.bugs.find(38483).attachments.upload(filePath)
    print( newAttachment.data )
  • Retrieve An Existing Attachment

    leantesting.attachments.find(21515).data
  • Delete An Attachment

    leantesting.attachments.delete(75258)

  • List Platform Types

    leantesting.platform.types.all().toArray()
  • Retrieve Platform Type

    leantesting.platform.types.find(1).data
  • List Platform Devices

    leantesting.platform.types.find(1).devices.all().toArray()
  • Retrieve Existing Device

    leantesting.platform.devices.find(11).data
  • List OS

    leantesting.platform.os.all().toArray()
  • Retrieve Existing OS

    leantesting.platform.os.find(1).data
  • List OS Versions

    leantesting.platform.os.find(1).versions.all().toArray()
  • List Browsers

    leantesting.platform.browsers.all().toArray()
  • Retrieve Existing Browser

    leantesting.platform.browsers.find(1).data
  • List Browser Versions

    leantesting.platform.browsers.find(1).versions.all().toArray()

  • Using Filters

    leantesting.projects.find(3515).bugs.all({'limit': 2, 'page': 5}).toArray()
  • Entity List Functions

    browsers = leantesting.platform.browsers.all()
    print( browsers.total() )
    print( browsers.totalPages() )
    print( browsers.count() )
    print( browsers.toArray() )
  • Entity List Iterator When used in for loops, entity lists will automatically cycle to first page, regardless of page filter. After ending the loop, the entity list will NOT revert to first page or the initial instancing page filter setting in order not to cause useless API request calls.

    comments = leantesting.bugs.find(38483).comments.all({'limit': 1})
    for page in comments:
        print( page )
  • Entity List Manual Iteration ```python comments = leantesting.bugs.find(38483).comments.all({‘limit’: 1}) print( comments.toArray() )

Will return false if unable to move forwards

comments.next(); print( comments.toArray() )

Will return false if already on last page

comments.last(); print( comments.toArray() )

Will return false if unable to move backwards

comments.previous(); print( comments.toArray() )

Will return false if already on first page

comments.first(); print( comments.toArray() ) ```

Security

Need to report a security vulnerability? Send us an email to support@crowdsourcedtesting.com or go directly to our security bug bounty site https://hackerone.com/leantesting.

Development

Install dependencies:

pip install -e .

Tests

Install dependencies as mentioned above, then you can run the test suite:

python -m unittest2 discover

Contributing

Please see CONTRIBUTING for details.

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

leantesting-1.2.0.tar.gz (23.5 kB view hashes)

Uploaded Source

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