This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
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.

Release History

Release History

1.2.0

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.1.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
leantesting-1.2.0.tar.gz (23.5 kB) Copy SHA256 Checksum SHA256 Source Nov 14, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting