未找到 pytest-bdd 的步骤实现
Step implementation not found pytest-bdd
我一直在使用 pytest 和 pytest-bdd v3.4 进行 运行 UI 测试。由于某种原因,发生以下错误。 pytest_bdd.exceptions.StepDefinitionNotFoundError: 未找到步骤定义。
功能已实现,但pytest无法定位。我一直在读到,对此的可能解释是由于 pytest-bdd 版本 4,我已将其降级为 3.4,但问题仍然存在。
test_login.py
import time
import pytest
from Pages.pageFactory import PageFactory
from pytest_bdd import scenarios, given, when, then
# Scenarios
from Utils.enum import Page
scenarios('../features/login.feature')
@pytest.fixture
def context():
b = None
yield b
# Given Steps
@given('El navegador se encuentra en la pantalla de prelogin')
def open_browser():
context.page = PageFactory.getPage(Page.auth)
context.page.openAuthPage()
# When Steps
@when('El usuario presiona el boton de BancoFassil')
def push_fassil_button():
context.page.checkPreLoginPage()
context.page.acceptButton()
time.sleep(5)
@then('La pantalla Login es desplegada')
def login_page_displayed():
context.page = PageFactory.getPage(Page.login)
context.page.checkLoginPage()
# Then Steps
@given('El navegador se encuentra en la pantalla de login')
def login_page():
context.page = PageFactory.getPage(Page.login)
context.page.checkLoginPage()
time.sleep(5)
@when('El usuario ingresa el nuevo user')
def step_impl():
context.page.insertUsername("user7")
@when('El usuario ingresa la password')
def step_impl(context):
context.page.insertPassword("12345")
@when('El boton ingresar es presionado')
def push_login_button():
context.page.login()
time.sleep(5)
@then('La pantala de terminos y condiciones es desplegada')
def terms_conditions_page_displayed():
context.page = PageFactory.getPage(Page.termsAndConditions)
time.sleep(5)
context.page.checkTermsAndConditionsPage()
@given('El navegador se encuentra en la pantalla de terminos y condiciones')
def terms_conditions():
context.page = PageFactory.getPage(Page.termsAndConditions)
time.sleep(5)
context.page.checkTermsAndConditionsPage()
@when('El boton aceptar es presionado')
def push_login_button():
context.page.acceptButton()
@then('La pantalla Home es desplegada')
def terms_conditions_page_displayed():
context.page = PageFactory.getPage(Page.home)
time.sleep(5)
context.page.checkHomePage()
login.feature
Feature: Login a la plataforma
Scenario: PreLogin
Given El navegador se encuentra en la pantalla de prelogin
When El usuario presiona el boton de BancoFassil
Then La pantalla Login es desplegada
Scenario: Login
Given El navegador se encuentra en la pantalla de login
When El usuario ingresa el nuevo user
And El usuario ingresa la password
And El boton ingresar es presionado
Then La pantala de terminos y condiciones es desplegada
Scenario: Terminos y Condiciones
Given El navegador se encuentra en la pantalla de terminos y condiciones
When El boton aceptar es presionado
Then La pantalla Home es desplegada
登录场景的问题仍然存在:找不到步骤定义:当“El usuario ingresa el nuevo user
您有两个同名函数,但步骤注释不同,并且缺少 context
参数:
@when('El usuario ingresa el nuevo user')
def step_impl():
context.page.insertUsername("user7")
@when('El usuario ingresa la password')
def step_impl(context):
context.page.insertPassword("12345")
重命名一个或两个函数,添加上下文参数,您应该没问题:
@when('El usuario ingresa el nuevo user')
def enter_username(context):
context.page.insertUsername("user7")
@when('El usuario ingresa la password')
def enter_password(context):
context.page.insertPassword("12345")
我一直在使用 pytest 和 pytest-bdd v3.4 进行 运行 UI 测试。由于某种原因,发生以下错误。 pytest_bdd.exceptions.StepDefinitionNotFoundError: 未找到步骤定义。
功能已实现,但pytest无法定位。我一直在读到,对此的可能解释是由于 pytest-bdd 版本 4,我已将其降级为 3.4,但问题仍然存在。
test_login.py
import time
import pytest
from Pages.pageFactory import PageFactory
from pytest_bdd import scenarios, given, when, then
# Scenarios
from Utils.enum import Page
scenarios('../features/login.feature')
@pytest.fixture
def context():
b = None
yield b
# Given Steps
@given('El navegador se encuentra en la pantalla de prelogin')
def open_browser():
context.page = PageFactory.getPage(Page.auth)
context.page.openAuthPage()
# When Steps
@when('El usuario presiona el boton de BancoFassil')
def push_fassil_button():
context.page.checkPreLoginPage()
context.page.acceptButton()
time.sleep(5)
@then('La pantalla Login es desplegada')
def login_page_displayed():
context.page = PageFactory.getPage(Page.login)
context.page.checkLoginPage()
# Then Steps
@given('El navegador se encuentra en la pantalla de login')
def login_page():
context.page = PageFactory.getPage(Page.login)
context.page.checkLoginPage()
time.sleep(5)
@when('El usuario ingresa el nuevo user')
def step_impl():
context.page.insertUsername("user7")
@when('El usuario ingresa la password')
def step_impl(context):
context.page.insertPassword("12345")
@when('El boton ingresar es presionado')
def push_login_button():
context.page.login()
time.sleep(5)
@then('La pantala de terminos y condiciones es desplegada')
def terms_conditions_page_displayed():
context.page = PageFactory.getPage(Page.termsAndConditions)
time.sleep(5)
context.page.checkTermsAndConditionsPage()
@given('El navegador se encuentra en la pantalla de terminos y condiciones')
def terms_conditions():
context.page = PageFactory.getPage(Page.termsAndConditions)
time.sleep(5)
context.page.checkTermsAndConditionsPage()
@when('El boton aceptar es presionado')
def push_login_button():
context.page.acceptButton()
@then('La pantalla Home es desplegada')
def terms_conditions_page_displayed():
context.page = PageFactory.getPage(Page.home)
time.sleep(5)
context.page.checkHomePage()
login.feature
Feature: Login a la plataforma
Scenario: PreLogin
Given El navegador se encuentra en la pantalla de prelogin
When El usuario presiona el boton de BancoFassil
Then La pantalla Login es desplegada
Scenario: Login
Given El navegador se encuentra en la pantalla de login
When El usuario ingresa el nuevo user
And El usuario ingresa la password
And El boton ingresar es presionado
Then La pantala de terminos y condiciones es desplegada
Scenario: Terminos y Condiciones
Given El navegador se encuentra en la pantalla de terminos y condiciones
When El boton aceptar es presionado
Then La pantalla Home es desplegada
登录场景的问题仍然存在:找不到步骤定义:当“El usuario ingresa el nuevo user
您有两个同名函数,但步骤注释不同,并且缺少 context
参数:
@when('El usuario ingresa el nuevo user')
def step_impl():
context.page.insertUsername("user7")
@when('El usuario ingresa la password')
def step_impl(context):
context.page.insertPassword("12345")
重命名一个或两个函数,添加上下文参数,您应该没问题:
@when('El usuario ingresa el nuevo user')
def enter_username(context):
context.page.insertUsername("user7")
@when('El usuario ingresa la password')
def enter_password(context):
context.page.insertPassword("12345")