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.
- Python 3.0 or greater
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
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
pagefilter. After ending the loop, the entity list will NOT revert to first page or the initial instancingpagefilter 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() )
comments.next(); print( comments.toArray() )
comments.last(); print( comments.toArray() )
comments.previous(); print( comments.toArray() )
comments.first(); print( comments.toArray() ) ```
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.
Install dependencies:
pip install -e .Install dependencies as mentioned above, then you can run the test suite:
python -m unittest2 discoverPlease see CONTRIBUTING for details.