Функция Python (шаг салата) всегда возвращает True

Я работаю с селеном и салатом для тестирования на питоне. У меня есть этот шаг для подсчета строк таблицы сотрудников

@step('I count employee table rows')
def i_count_emp_table_rows(step):
    try:
        elems = world.driver.find_elements_by_xpath(".//*[@id='myTable']/tr")
        sum = 0
        for item in elems:
            sum= sum+1
        return sum
    except Exception, e:
        print e
        return None

И у меня есть еще один шаг. На этом шаге я хочу сохранить количество сотрудников в таблице сотрудников (используя описанный выше шаг), прежде чем перейти на следующую страницу после нажатия кнопки «Добавить сотрудника».

@step('I click the Add Employee Button')
def i_click_the_add_employee_button(step):
    world.prev_no_of_emp = step.given('I count employee table rows')
    print "Right Now total rows in table: " + str(world.pre_no_of_emp)
    done, world.driver = click_page_element(admin_add_employee_button_xpath, world.driver, wait=10) 

Но самое смешное, что я всегда получаю «Истина» вместо количества в списке. Я даже использовал len(), но безуспешно
Вот результат оператора печати.
Сейчас общее количество строк в таблице: верно


person Adil Malik    schedule 23.06.2016    source источник
comment
step.given возвращается True. Вы не против показать step.given?   -  person Moses Koledoye    schedule 23.06.2016
comment
@MosesKoledoye Да, я уже сделал. Вышеупомянутая функция вызывается здесь.   -  person Adil Malik    schedule 23.06.2016
comment
@AdilMalik, вызывающий шаг таким образом, возвращает True, если шаг выполнен успешно. Это означает, что оператор return в этом случае бесполезен.   -  person Hassan Mehmood    schedule 23.06.2016
comment
@AdilMalik, если вы хотите получить счет, вам нужно поместить его в переменную «мир» или в любую другую глобальную переменную.   -  person Hassan Mehmood    schedule 23.06.2016
comment
@HassanMehmood Да, на самом деле я использую world.pre_no_of_emp в операторе печати   -  person Adil Malik    schedule 23.06.2016
comment
@HassanMehmood Хорошо, я понял. Спасибо. Ты прав   -  person Adil Malik    schedule 23.06.2016
comment
@AdilMalik Я обновил ваши шаги, смотрите ответ ниже. И пожалуйста :)   -  person Hassan Mehmood    schedule 23.06.2016
comment
@HassanMehmood Есть проблема с вашим ответом. Я хочу, чтобы этот шаг был общим. Поэтому всякий раз, когда мне нужно проверить количество строк в таблице сотрудников, я вызываю этот шаг. Но способ, который вы предложили, станет ограниченным. Но да, если нет возврата Так что мне нужно сделать некоторые хаки.   -  person Adil Malik    schedule 23.06.2016
comment
Ну, вы можете это сделать, в чем проблема?.. Также я думаю, что вы хотите, чтобы это можно было сделать с помощью простой функции. Для этого не нужно создавать отдельный шаг. Создайте простой метод, который возвращает вам количество строк.   -  person Hassan Mehmood    schedule 23.06.2016
comment
Решено :). Да, я знаю, что это можно сделать с помощью простой функции. Проблема решена   -  person Adil Malik    schedule 23.06.2016
comment
Используя глобальную переменную, как вы предложили   -  person Adil Malik    schedule 23.06.2016


Ответы (1)


Вам нужно поместить количество в некоторую глобальную переменную. См. ниже обновленные шаги.

@step('I count employee table rows')
def i_count_emp_table_rows(step):
    try:
        elems = world.driver.find_elements_by_xpath(".//*[@id='myTable']/tr")
        world.count = len(elems)
    except Exception, e:
        print e.message
        world.count = None

@step('I click the Add Employee Button')
def i_click_the_add_employee_button(step):
    step.given('I count employee table rows')
    print "Right Now total rows in table: " + str(world.count)
    done, world.driver = click_page_element(admin_add_employee_button_xpath, world.driver, wait=10) 
person Hassan Mehmood    schedule 23.06.2016