Utilizzo del grande framework Behave, ma con problemi con la mia mancanza di competenze OOP.Aggiunta di attributi comuni a un metodo Behave
Behave dispone di uno spazio dei nomi di contesto integrato in cui è possibile condividere gli oggetti tra i passaggi di esecuzione del test. Dopo aver inizializzato la mia sessione di WebDriver, continuo a passarlo tra i miei passi usando questo context
per contenere tutto. Funzionalità va bene, ma come potete vedere qui sotto, è tutto tranne che ASCIUTTO.
Come/dove posso aggiungere questi attributi allo step_impl()
o context
una volta sola?
environment.py
from selenium import webdriver
def before_feature(context, scenario):
"""Initialize WebDriver instance"""
driver = webdriver.PhantomJS(service_args=service_args, desired_capabilities=dcap)
"""
Do my login thing..
"""
context.driver = driver
context.wait = wait
context.expected_conditions = expected_conditions
context.xenv = env_data
steps.py
@given('that I have opened the blah page')
def step_impl(context):
driver = context.driver
wait = context.wait
expected_conditions = context.expected_conditions
xenv = context.xenv
driver.get("http://domain.com")
driver.find_element_by_link_text("blah").click()
wait.until(expected_conditions.title_contains("Blah page"))
@given(u'am on the yada subpage')
def step_impl(context):
driver = context.driver
wait = context.wait
expected_conditions = context.expected_conditions
xenv = context.xenv
if driver.title is not "MySubPage/":
driver.get("http://domain.MySubPage/")
wait.until(expected_conditions.title_contains("Blah | SubPage"))
@given(u'that I have gone to another page')
def step_impl(context):
driver = context.driver
wait = context.wait
expected_conditions = context.expected_conditions
xenv = context.xenv
driver.get("http://domain.com/MyOtherPahge/")
è la domanda solo come evitare tutto il disimballaggio da ' contesto' in ciascuna funzione 'step_impl'? Direi che potresti tagliarne un po 'saltando gli oggetti che non userete più tardi (ad esempio 'xenv' ovunque,' wait' e 'expected_conditions' nell'ultima versione). Oltre a ciò, è possibile saltare alcuni decompressione e utilizzare semplicemente gli attributi del contesto direttamente, ad es. 'Context.driver.get (qualunque)'. So poco di Behave, quindi non sono sicuro che questa sia una risposta. – Blckknght
Grazie. Sì, per evitare tutto il disimballaggio * e * evitare la duplicazione chiamando 'context.attribute.something' ogni volta, nessuno dei quali si sente molto Pythonic –