1

功能文件如下

功能: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:列表索引超出范围

4

6 回答 6

2

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

pytest <test_fily.py>

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

于 2021-03-15T10:21:22.623 回答
0

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

于 2021-07-26T09:19:03.017 回答
0

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

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

于 2021-03-15T09:42:17.133 回答
0

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

于 2021-03-20T00:58:07.203 回答
0

更改您的配置以使用 pytest 配置:screenshot

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

于 2020-11-12T08:04:26.927 回答
0

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

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

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

于 2020-02-25T04:54:27.810 回答