Приемочный тест «Пользователь меняет пароль» ведет себя - PullRequest
0 голосов
/ 04 ноября 2018

Я автоматизировал приемочные тесты с использованием поведения (python), когда столкнулся с проблемой написания теста для сценария смены пароля.

Это мои шаги в test_change_password.py

from behave import *
from features.steps.common_steps import fill_in_email, fill_in_password, show_main_page, register_user, logout
from features.steps.constants import *
import time

CHANGE_PASSWORD_USER_EMAIL = 'change_password@gmail.com'

use_step_matcher("re")


def login(context, password):
    context.browser.visit("/login")
    context.browser.is_element_present_by_css("//input")
    fill_in_email(context, 'test@gmail.com')
    fill_in_password(context, password)
    context.browser.find_by_xpath("//button").first.click()

def change_password_fields_and_logout(context):
    old_pass_field = context.browser.find_by_xpath('//form/div[%s]/input' % OLD_PASS_INDEX)
    old_pass_field.fill(NEW_PASSWORD)
    new_pass_field = context.browser.find_by_xpath('//form/div[%s]/input' % NEW_PASS_INDEX)
    new_pass_field.fill(OLD_PASSWORD)
    confirm_new_pass_field = context.browser.find_by_xpath('//form/div[%s]/input' % CONFIRM_NEW_PASS_INDEX)
    confirm_new_pass_field.fill(OLD_PASSWORD)
    context.browser.find_by_xpath('//button[text()="Submit"]').first.click()
    logout(context)


@given("change password user login")
def step_impl(context):
    context.browser.visit('/login')
    context.browser.is_element_present_by_css('//h1')
    fill_in_email(context, CHANGE_PASSWORD_USER_EMAIL)
    fill_in_password(context, NEW_PASSWORD)
    context.browser.find_by_xpath("//button[@type='submit']").first.click()
    if not context.browser.is_element_present_by_text('first name last name'):
        NEW_PASSWORD, OLD_PASSWORD = OLD_PASSWORD, NEW_PASSWORD
        fill_in_password(context, NEW_PASSWORD)


@when("user changed his password")
def step_impl(context):
    context.browser.is_element_present_by_text('first name last name')
    context.browser.find_by_text("first name last name").first.click()
    context.browser.is_element_present_by_text('Change password')
    context.browser.find_by_xpath('//a[text()="Change password"]').first.click()
    change_password_fields_and_logout(context)


@then("user login with new password")
def step_impl(context):
    login(context, NEW_PASSWORD)

Он работает, как и ожидалось, при первом запуске тестов, но, поскольку он меняет пароль пользователя в БД, я должен поменять местами значения NEW_PASSWORD и OLD_PASSWORD или усечь БД и заполнить свои приборы перед запуском тестов.

Я думаю, что есть лучшие, более автоматизированные способы сделать это.

1 Ответ

0 голосов
/ 05 ноября 2018
  1. Подключитесь к базе данных и вставьте нового пользователя в метод настройки.
  2. Проверка изменения пароля для добавленного пользователя на шаге 1.
  3. Удаление пользователя из базы данных при тестовой очистке.

    Вы можете использовать Environmental-Control для настройки и очистки, или вы можете написать свои собственные шаги для этого.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...