Ich bin neu in PYTEST Framework und ich frage mich, ob es eine Standard-Ansatz meine Pytests Parameter von anderen Skript erhalten. Ich denke, die am weitesten verbreitete Praxis ist @pytest.fixture
zu schreiben, die wie folgt aussieht:Python Pytest - Empfangen von Testparametern von außerhalb
@pytest.fixture
def param(request):
device = request.config.getoption("--parameter")
if parameter == 'A':
return value_a
else:
return default_value
Und läuft meinen Test mit dem Befehl py.test --parameter=value_a
Aber wenn mein Test muss viele Parameter (wird dieser Befehl von einem anderen Skript ausgeführt), sagen wir zum Beispiel 10, das wäre ein langer Befehl. Also frage ich, was ist der Standard-Ansatz in einer solchen Situation - stelle ich eine Art XML-Datei oder ein serialisiertes Wörterbuch mit Parametern und meinem Gerät zur Verfügung, um die Parameter von ihnen zu übernehmen.
Auch wie mein anderes Skript wird wissen, welche Art von Parametern zu meinem Test zur Verfügung stellen - sollte test_parameters Konfigurationsdatei oder einige fest codierte Daten in meiner conftest.py, die die Informationen für die Parameter enthält, oder sollte ich get verwenden sie durch Lesen der Signatur der Tests mit from inspect import signature
.
EDITED
Hier ist eine Probe meiner Tests
class TestH5Client:
# runs before everything else in the class
def setup_class(cls, ip="11.111.111.111",
browserType="Chrome",
port="4444",
client_url="https://somelink.com/",
username="some_username",
hpassword="some_pass"):
cls.driver = get_remote_webdriver(ip, port, browserType)
cls.driver.implicitly_wait(60)
cls.client_url = client_url
cls.username = username
cls.password = password
def teardown_class(cls):
cls.driver.quit()
def test_login_logout(self):
# opening web_client
self.driver.set_page_load_timeout(60)
self.driver.get(self.h5_client_url)
# opening web_client log-in window
self.driver.set_page_load_timeout(60)
self.driver.find_element_by_css_selector("div.gettingStarted p:nth-child(4) a:nth-child(1)").click()
# log in into the client
self.driver.find_element_by_id("username").send_keys(self.h5_username)
self.driver.find_element_by_id("password").send_keys(self.h5_password)
self.driver.set_page_load_timeout(60)
self.driver.find_element_by_id("submit").click()
# clicking on the app_menu so the logout link appears
self.driver.implicitly_wait(60)
self.driver.find_element_by_id("action-userMenu").click()
# clicking on the logout link
self.driver.implicitly_wait(60)
self.driver.find_element_by_css_selector("#vui-actions-menu li:nth-child(3)").click()
assert "Login" in self.driver.title
def test_open_welcome_page(self):
"""fast selenium test for local testing"""
self.driver.set_page_load_timeout(20)
self.driver.get(self.h5_client_url)
assert "Welcome" in self.driver.title
def test_selenium_fail(self):
"""quick test of selenium failure for local testing"""
self.driver.set_page_load_timeout(20)
self.driver.get(self.h5_client_url)
assert "NotInHere" in self.driver.title
ich alle diese Parameter müssen von einem externen Python-Framework bietet Prüfparameter zur Verfügung gestellt werden. Und ich muss wissen, wie dieses Framework den Namen der Parameter erhalten soll und wie man diese Tests mit diesen Parametern ausführt.
Bitte geben Sie ein konkretes Beispiel für das Problem an, mit dem Sie konfrontiert werden – e4c5
Sind die Parameter wirklich variabel oder sind sie wirklich nur eine Reihe von Konfigurationen, wie ein Dev-Server, ein Server, ein Prod-Server? –
@Austin Hastings Sie werden jede Woche geändert :) –