Cloud SDK Library
###cloudsdk.py : This Library Consists of the following- 1. class ConfigureCloudSDK : Base Configuration Class 2. class CloudSDK(ConfigureCloudSDK) : Main Cloudsdk Class 3. class ProfileUtility : Used to CRUD over CloudSDK Profiles Utility 4. class JFrogUtility : Used for Artifactory Utils, Get latest Build, Upload Firmware etc.
###Note: cloudsdk.py has libraries that uses Swagger Autogenerated Code.
Setup The Environment For using the cloudsdk library
Using Swagger Autogenerated CloudSDK Library pypi package (implemented with swagger codegen). Using [pytest] as the test execution framework. Using pylint for code quality monitoring. Using allure with Github Pages to report test outcome.
Follow the setps below to setup the environment for your development Environment
mkdir ~/.pip
echo "[global]" > ~/.pip/pip.conf
echo "index-url = https://pypi.org/simple" >> ~/.pip/pip.conf
echo "extra-index-url = https://tip-read:tip-read@tip.jfrog.io/artifactory/api/pypi/tip-wlan-python-pypi-local/simple" >> ~/.pip/pip.conf
after that do the following in this folder
pip3 install -r requirements.txt
Now your cloud sdk code is downloaded with all of the dependencies and you can start working on the solution
Docker
Alternatively you can use provided dockerfiles to develop\lint your code:
docker build -t wlan-cloud-test -f Dockerfile .
docker build -t wlan-cloud-lint -f Dockerfile-lint .
and then you can do something like this to lint your code:
docker run -it --rm -v %path_to_this_dir%/old_pytest wlan-tip-lint -d protected-access *py # for now
docker run -it --rm -v %path_to_this_dir%/old_pytest wlan-tip-lint *py # for future
to have a better output (sorted by line numbers) you can do something like this:
docker run -it --rm --entrypoint sh -v %path_to_this_dir%/old_pytest wlan-tip-lint -- -c 'pylint *py | sort -t ":" -k 2,2n'
and you can use something like this to develop your code:
docker run -it -v %path_to_this_dir%/old_pytest wlan-tip-test
General guidelines
This testing code adheres to generic pep8 style guidelines, most notably:
We are using the pylint package to do the linting. Documentation for it can be found here.
In general, the customizations are possible via the .pylintrc file:
- Line length below 120 characters is fine (search for max-line-length)
- No new line at the end of file is fine (search for missing-final-newline)
- Multiple new lines at the end of file are fine (search for trailing-newlines)
- Indent using 4 spaces (search for indent-string)
- todo
In future we should enforce a policy, where we cannot merge a code where the pylint scoe goes below 7:
pylint --fail-under=7 *py
the command above would produce a non-zero exit code if the score drops below 7.
Reporting
Currently the plan is to use pytest integrated with allure to create visual reports for the test outcomes
Miscelanneous
- Do not use old style string formatting:
"Hello %s" % var; usef"Hello {var}instead - use
"""in Docstrings - todo
Useful links
https://docs.pytest.org/en/latest/example/markers.html
https://docs.pytest.org/en/latest/usage.html
http://pythontesting.net/framework/pytest/pytest-introduction/