[英]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.