mirror of
https://github.com/Telecominfraproject/wlan-testing.git
synced 2025-10-30 10:32:26 +00:00
initial pytest core redone
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -149,4 +149,6 @@ pytest/*
|
||||
!pytest/test_*.py
|
||||
!pytest/helpers
|
||||
!pytest/pytest.ini
|
||||
pytest/nightly*log
|
||||
pytest/nightly*log
|
||||
|
||||
test_everything.xml
|
||||
29
libs/cloudsdk/2.4ghz/test_generic.py
Normal file
29
libs/cloudsdk/2.4ghz/test_generic.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import pytest
|
||||
|
||||
@pytest.mark.usefixtures('setup_cloudsdk')
|
||||
@pytest.mark.usefixtures('update_firmware')
|
||||
@pytest.mark.UHF # example of a class mark
|
||||
class Test24ghz(object):
|
||||
@pytest.mark.wpa2
|
||||
def test_single_client_wpa2(self, setup_cloudsdk, update_firmware):
|
||||
print(setup_cloudsdk)
|
||||
assert 1 == 0
|
||||
|
||||
@pytest.mark.open
|
||||
def test_single_client_open(self, setup_cloudsdk, update_firmware):
|
||||
print(setup_cloudsdk)
|
||||
assert 1 == 0
|
||||
|
||||
@pytest.mark.usefixtures('setup_cloudsdk')
|
||||
@pytest.mark.usefixtures('update_firmware')
|
||||
@pytest.mark.SHF # example of a class mark
|
||||
class Test50ghz(object):
|
||||
@pytest.mark.wpa2
|
||||
def test_single_client_wpa2(self, setup_cloudsdk, update_firmware):
|
||||
print(setup_cloudsdk)
|
||||
assert 1 == 0
|
||||
|
||||
@pytest.mark.open
|
||||
def test_single_client_open(self, setup_cloudsdk, update_firmware):
|
||||
print(setup_cloudsdk)
|
||||
assert 1 == 0
|
||||
@@ -82,3 +82,9 @@ Currently the plan is to use pytest integrated with [allure](https://docs.qameta
|
||||
1. Do not use old style string formatting: `"Hello %s" % var`; use `f"Hello {var}` instead
|
||||
2. use `"""` in Docstrings
|
||||
3. 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/
|
||||
17
libs/cloudsdk/configuration_data.py
Normal file
17
libs/cloudsdk/configuration_data.py
Normal file
@@ -0,0 +1,17 @@
|
||||
"""
|
||||
A set of constants describing AP profiles
|
||||
"""
|
||||
|
||||
PROFILE_DATA = {
|
||||
"test_single_client_wpa2": {
|
||||
"profile_name": "test-ssid-wpa2",
|
||||
"ssid_name": "test_wpa2_test",
|
||||
"mode": "BRIDGE",
|
||||
"security_key": "testing12345"
|
||||
},
|
||||
"test_single_client_open": {
|
||||
"profile_name": "test-ssid-open",
|
||||
"ssid_name": "test_open",
|
||||
"mode": "BRIDGE"
|
||||
}
|
||||
}
|
||||
78
libs/cloudsdk/conftest.py
Normal file
78
libs/cloudsdk/conftest.py
Normal file
@@ -0,0 +1,78 @@
|
||||
# import files in the current directory
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(
|
||||
os.path.dirname(
|
||||
os.path.realpath( __file__ )
|
||||
)
|
||||
)
|
||||
|
||||
import pytest
|
||||
from configuration_data import PROFILE_DATA
|
||||
|
||||
def pytest_addoption(parser):
|
||||
parser.addini("jfrog-base-url", "jfrog base url")
|
||||
parser.addini("jfrog-user-id", "jfrog username")
|
||||
parser.addini("jfrog-user-password", "jfrog password")
|
||||
parser.addini("sdk-base-url", "cloud sdk base url")
|
||||
parser.addini("sdk-user-id", "cloud sdk username")
|
||||
parser.addini("sdk-user-password", "cloud sdk user password")
|
||||
parser.addini("sdk-customer-id", "cloud sdk customer id for the access points")
|
||||
parser.addini("testrail-base-url", "testrail base url")
|
||||
parser.addini("testrail-project", "testrail project name to use to generate test reports")
|
||||
parser.addini("testrail-user-id", "testrail username")
|
||||
parser.addini("testrail-user-password", "testrail user password")
|
||||
parser.addini("lanforge-ip-address", "LANforge ip address to connect to")
|
||||
parser.addini("lanforge-port-number", "LANforge port number to connect to")
|
||||
parser.addini("lanforge-radio", "LANforge radio to use")
|
||||
parser.addini("lanforge-ethernet-port", "LANforge ethernet adapter to use")
|
||||
|
||||
# change behaviour
|
||||
parser.addoption(
|
||||
"--skip-update-firmware",
|
||||
action="store_true",
|
||||
default=False,
|
||||
help="skip updating firmware on the AP (useful for local testing)"
|
||||
)
|
||||
# this has to be the last argument
|
||||
# example: --access-points ECW5410 EA8300-EU
|
||||
parser.addoption(
|
||||
"--access-points",
|
||||
nargs="+",
|
||||
default=[ "ECW5410" ],
|
||||
help="list of access points to test"
|
||||
)
|
||||
|
||||
def pytest_generate_tests(metafunc):
|
||||
metafunc.parametrize("access_points", metafunc.config.getoption('--access-points'), scope="session")
|
||||
|
||||
# run something after all tests are done regardless of the outcome
|
||||
def pytest_unconfigure(config):
|
||||
print("Tests cleanup done")
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def setup_cloudsdk(request, instantiate_cloudsdk):
|
||||
def fin():
|
||||
print(f"Cloud SDK cleanup for {request.node.originalname}")
|
||||
request.addfinalizer(fin)
|
||||
yield PROFILE_DATA[request.node.originalname]
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def update_firmware(request, instantiate_jFrog, instantiate_cloudsdk, retrieve_latest_image, access_points):
|
||||
if request.config.getoption("--skip-update-firmware"):
|
||||
return
|
||||
yield "update_firmware"
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def retrieve_latest_image(request, access_points):
|
||||
if request.config.getoption("--skip-update-firmware"):
|
||||
return
|
||||
yield "retrieve_latest_image"
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def instantiate_cloudsdk(request):
|
||||
yield "instantiate_cloudsdk"
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def instantiate_jFrog(request):
|
||||
yield "instantiate_jFrog"
|
||||
29
libs/cloudsdk/pytest.ini
Normal file
29
libs/cloudsdk/pytest.ini
Normal file
@@ -0,0 +1,29 @@
|
||||
[pytest]
|
||||
addopts= --junitxml=test_everything.xml
|
||||
# jFrog parameters
|
||||
jfrog-base-url=tip.jFrog.io/artifactory/tip-wlan-ap-firmware
|
||||
jfrog-user-id=tip-read
|
||||
jfrog-user-password=tip-read
|
||||
# Cloud SDK parameters
|
||||
sdk-base-url=wlan-portal-svc.cicd.lab.wlan.tip.build
|
||||
sdk-user-id=support@example.com
|
||||
sdk-user-password=support
|
||||
# Testrails parameters
|
||||
testrail-base-url=telecominfraproject.testrail.com
|
||||
testrail-project=opsfleet-wlan
|
||||
testrail-user-id=gleb@opsfleet.com
|
||||
testrail-user-password=use_command_line_to_pass_this
|
||||
# LANforge
|
||||
lanforge-ip-address=localhost
|
||||
lanforge-port-number=8080
|
||||
lanforge-radio=wiphy4
|
||||
lanforge-ethernet-port=eth2
|
||||
|
||||
# Cloud SDK settings
|
||||
sdk-customer-id=2
|
||||
|
||||
markers =
|
||||
UHF: marks tests as using 2.4 ghz frequency
|
||||
SHF: marks tests as using 5.0 ghz frequency
|
||||
open: marks tests as using no security
|
||||
wpa2: marks tests as using wpa2 security
|
||||
@@ -1,5 +1,5 @@
|
||||
"""
|
||||
A set of constants to use throughtout the tests
|
||||
A set of constants describing cloud controllers properties
|
||||
"""
|
||||
|
||||
SDK_BASE_URLS = {
|
||||
|
||||
Reference in New Issue
Block a user