2017-09-08 1 views
0

In meiner Bedingung versuche ich dem Variablennamen einen neuen Wert zuzuweisen, aber ich erhalte den Fehler unten.UnboundLocalError: Lokale Variable 'Name', auf die vor der Zuweisung verwiesen wird

Nach meinem Code ausführen, erhalte ich UnboundLocalError: local variable 'name' referenced before assignment

Haben Sie Ahnung haben, um es zu beheben?

Ich weiß nicht, warum ich das immer, wenn die Variable

Mein Code

import pytest 
import time 

from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 
from faker import Faker 

fake = Faker("en_US") 

name = fake.name() 

def create_contributor_minimum_requirements(driver): 

    driver.find_element_by_css_selector(".btn.btn--primary").click() 
    WebDriverWait(driver, 30).until(
     EC.visibility_of_element_located((By.XPATH, ".//*[@id='first-name']/input"))) 
    driver.find_element_by_xpath(".//*[@id='first-name']/input").send_keys(contributor_name) 
    assert driver.find_element_by_css_selector(".actions-bar__nav-link.router-link-active").text == name 
    time.sleep(3) 

    duplicated_contributor_message = driver.find_element_by_css_selector(".field-error-text") 

    if duplicated_contributor_message.is_displayed(): 

     name = fake.name() + fake.name() 

     driver.find_element_by_xpath(".//*[@id='first-name']/input").clear() 
     driver.find_element_by_xpath(".//*[@id='first-name']/input").send_keys(name) 

    driver.find_element_by_css_selector(".btn.save-button.btn--disabled-dark.btn--critical").click() 
    WebDriverWait(driver, 30).until(
     EC.visibility_of_element_located((By.CSS_SELECTOR, ".btn.save-button.btn--disabled-dark.btn--disabled"))) 
    assert driver.find_element_by_css_selector(".btn.save-button.btn--disabled-dark.btn--disabled").is_enabled() == False 

def search_created_contributor(driver): 

    driver.find_element_by_css_selector(".navbar__menu__item.navbar__menu__item--search").click() 
    WebDriverWait(driver, 30).until(
     EC.visibility_of_element_located((By.CSS_SELECTOR, ".search__input"))) 
    driver.find_element_by_css_selector(".search__input").send_keys(name) 
    WebDriverWait(driver, 30).until(
     EC.visibility_of_element_located((By.CSS_SELECTOR, ".search__results__list>li"))) 

def assert_created_contributor_is_found(driver): 

    assert name in driver.find_element_by_css_selector(".search__results__list>li").text 

def test_case_one(driver): 

    login_to_cms(driver) 
    access_contributor_page(driver) 
    create_contributor_minimum_requirements(driver) 
    search_created_contributor(driver) 
    assert_created_contributor_is_found(driver) 

Antwort

1

Funktionen global ist, ihre eigenen Anwendungsbereich haben. Um auf eine globale Variable zuzugreifen, müssen Sie dies explizit sagen:

def create_contributor_minimum_requirements(driver): 
    global name 
    ... 

Ich hoffe, es hilft!

Verwandte Themen