首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未找到步骤实现pytest-bdd

未找到步骤实现pytest-bdd
EN

Stack Overflow用户
提问于 2021-03-13 04:20:48
回答 1查看 56关注 0票数 0

我一直在使用pytest和pytest-bdv3.4运行UI测试。由于某些原因,出现了以下错误。找不到pytest_bdd.exceptions.StepDefinitionNotFoundError:步骤定义。

该函数已实现,但pytest无法找到它。我一直在读到可能的解释是由于pytest-bdd版本4,我已经将它降级到3.4,但问题仍然存在。

test_login.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-16 22:33:28

您有两个名称相同但步骤注释不同的函数,并且缺少context参数:

代码语言:javascript
复制
@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")

重命名这两个函数中的一个或两个,添加context参数,就可以了:

代码语言:javascript
复制
@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")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66606711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档