python- 行为:生成步骤功能抛出列表索引超出范围

python- behave: generate step functionality throws list index out of range

这是我的第一个问题,欢迎提出任何改进建议:)

我正在研究如何使用 Sublime Text 3、python 和行为来编写测试。

现在可以识别我的功能文件:据我所知,颜色正确。

接下来我要生成阶跃函数。期望的行为是当我这样做时(右键单击函数 ==> 生成步进函数,或通过命令选项板,它会打开一个弹出窗口,我可以在其中指定我希望它创建一个新文件,并且然后创建该文件。

我得到的错误是: 当我这样做时,除了在控制台中抛出一些异常外,它什么都不做:

    Traceback (most recent call last):
    File "behave_toolkit.commands.highlight_unimplemented_steps in /Users/chai/Library/Application Support/Sublime Text 3/Installed Packages/Behave Toolkit.sublime-package", line 18, in run_async
    File "behave_toolkit.mixins.steps in /Users/chai/Library/Application Support/Sublime Text 3/Installed Packages/Behave Toolkit.sublime-package", line 50, in get_unimplemented_steps
    File "behave_toolkit.mixins.steps in /Users/chai/Library/Application Support/Sublime Text 3/Installed Packages/Behave Toolkit.sublime-package", line 82, in _get_step_data
    File "behave_toolkit.behave_command in /Users/chai/Library/Application Support/Sublime Text 3/Installed Packages/Behave Toolkit.sublime-package", line 27, in behave
    File "behave_toolkit.behave_command in /Users/chai/Library/Application Support/Sublime Text 3/Installed Packages/Behave Toolkit.sublime-package", line 73, in _launch_process
    IndexError: list index out of range

我尝试了一些关于在包设置中定义行为路径的建议,但没有帮助。

我对这些事情不是很有经验,所以非常欢迎任何详细的回答。

有什么想法吗?

在 Sublime 插件 Behave Toolkit 的 "Getting Started" 页面上 documentation, the very first thing it talks about is setting up your project's directory, then opening it in Sublime. You are getting this error because the file(s) you are editing do(es) not belong to a Sublime project. This in turn is causing an error on this line of the code,它抛出一个 IndexError 因为 view.window().folders()[0] 是寻找项目中存在的第一个文件夹(它 returns 与项目关联的文件夹列表),在您的情况下不存在。

此错误未被捕获、传播并最终导致您在问题中提出的回溯。 IMO 这不是一个很好的插件编程示例,因为没有错误处理,而且插件假定一个项目(必须至少有一个文件夹)处于活动状态。更好的方法是将这一行抽象为一个函数,该函数包含错误检查和一种在调用时警告用户问题所在的方法,而不是(相对)默默地失败。

所以,解决方法是总是运行这个插件在一个只包含一个文件夹的项目中,如果你有多个文件夹,插件会默认选择列表中的第一个(第零个)元素).


跟进

我提交了 bug report and a pull request 来解决这个问题。希望它能很快被合并和推出。如果您想立即使用它,方法如下:

打开命令面板并 select Package Control: Disable Package,然后向下滚动并 select Behave Toolkit。现在,关闭 Sublime。接下来,在命令行上(假设您已经安装了 git 并且在您的路径中),切换到您的 Packages 文件夹,这是在 selecting 时在操作系统的文件管理器中打开的文件夹Preferences → Browse Packages…:

  • Linux: ~/.config/sublime-text-3/Packages
  • OS X: ~/Library/Application Support/Sublime Text 3/Packages
  • Windows 常规安装:C:\Users\<b><i>你的用户名</i></b>\AppData\Roaming\Sublime 文本3\Packages
  • Windows 便携式安装:<b><i>InstallationFolder</i></b>\Sublime Text 3\Data\Packages

运行 以下命令:

git clone https://github.com/MattDMo/BehaveToolkit.git
cd BehaveToolkit
git checkout -b issue-17

您现在可以重新启动 Sublime,我的插件版本将变为活动状态。请记住,由于它是手动安装的,因此不会由 Package Control 自动更新。请注意 Behave Toolkit 的包控制页面和 Details 下方左侧顶部的 MODIFIED 字段。如果它更新了,请打开您的用户首选项 (Preferences → Settings—User) 并将 "ignored_packages" 中的 "Behave Toolkit" 行修改为 "BehaveToolkit"(即删除space)。保存文件,Packages 中的克隆目录将被忽略,而 Package Control 安装版本则不会。最后,您需要打开命令面板和 select Package Control: Upgrade Package → Behave Toolkit 以获取最新版本。

祝你好运!