繁体   English   中英

无法运行 PyTest-bdd 步骤定义文件,因为它引发索引超出范围错误

[英]Unable to run PyTest-bdd step definition file as it throws index out of range error

功能文件如下

功能:Nopcommerce登录

场景:登录nopcommerce网站

Given nopcommerce page is displayed
When user enters username as admin@yourstore.com
When user enters password as admin
Then user is able to login to nocpmmerce website

步骤定义python文件如下

from pytest_bdd import scenarios, given, when, then 
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pytest

scenarios('../features/NopcommerceLogin.feature')

@pytest.fixture()
def browser():
    driver = webdriver.Safari()
    yield driver
    driver.quit()

@given("nopcommerce page is displayed")
def webpage(browser):
    browser.get("http://admin-demo.nopcommerce.com")

@when("user enters username as admin@yourstore.com")
def enter_uname(browser):
    browser.find_element_by_id("Email").send_keys("admin@yourstore.com")

@when("user enters password as admin")
def enter_pwd(browser):
    browser.find_element_by_id("Password").send_keys("admin")
    browser.find_element_by_xpath("/html/body/div[6]/div/div/div/div/div[2]/div[1]/div/form/div[3]/input").click()

@then("user is able to login to nocpmmerce website")
def loginsuccess(browser):
    assert browser.current_url == "https://admin-demo.nopcommerce.com/admin/"

运行 step_def 文件时,显示以下错误消息

回溯(最近一次调用最后一次):

文件“~/tests/step_defs/test_NopcommerceLogin.py”,第 6 行,在场景中('../features/NopcommerceLogin.feature')

文件“~/venv/lib/python3.8/site-packages/pytest_bdd/scenario.py”,第343行,场景中的features_base_dir = get_features_base_dir(module)

文件“~/venv/lib/python3.8/site-packages/pytest_bdd/scenario.py”,第 295 行,在 get_features_base_dir 中 return get_from_ini('bdd_features_base_dir', default_base_dir)

文件“~/venv/lib/python3.8/site-packages/pytest_bdd/scenario.py”,第 303 行,在 get_from_ini config = CONFIG_STACK[-1]

IndexError:列表索引超出范围

这并不完全是解决方案,我在 PycharmIDE 中也有同样的问题,但我建议使用终端并开始测试,例如:

pytest <test_fily.py>

对于 IDEA 解决方案,仍在研究中

我想问题是 pytest 没有在您的步骤定义文件中识别任何可执行的 pytest 方法。 请尝试将“scenarios”更改为“scenario”并在相同的下方添加一个pytest可识别方法

@scenario('../features/NopcommerceLogin.feature')
def test_login():
      pass

这种方法总是对我有用,并且基于 Pytest-BDD 文档。

更改您的配置以使用 pytest 配置:截图

或尝试使用终端运行: pipenv run python -m pytest

确保在 pycham 中配置了 pytest 为您的项目启用 Pytest

打开设置/首选项 | 工具 | Python 集成工具设置对话框,如选择您的测试框架中所述。 在默认测试运行器字段中选择 pytest。 点击确定保存设置

@Vova我发现在运行配置中,工作目录被错误地设置为steps python文件所在的目录,而不是项目根目录。 修复使测试在 PyCharm 中成功运行的问题。

我遇到了这个问题 - 它只是在功能文件中对齐,我在“场景”之后和冒号之前在场景定义上有一个空格。 当我删除时 - 错误不再发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM