ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

插件单元测试框架

这是一个为 sublime 插件的 unittest 框架。支持延迟测试配置,这样你可以将控制权交给 sublime text,然后在几毫秒后继续测试。

详细信息

安装

  • 总数 465
  • Win 318
  • Mac 92
  • Linux 55
8 月 6 日 8 月 5 日 8 月 4 日 8 月 3 日 8 月 2 日 8 月 1 日 7 月 31 日 7 月 30 日 7 月 29 日 7 月 28 日 7 月 27 日 7 月 26 日 7 月 25 日 7 月 24 日 7 月 23 日 7 月 22 日 7 月 21 日 7 月 20 日 7 月 19 日 7 月 18 日 7 月 17 日 7 月 16 日 7 月 15 日 7 月 14 日 7 月 13 日 7 月 12 日 7 月 11 日 7 月 10 日 7 月 9 日 7 月 8 日 7 月 7 日 7 月 6 日 7 月 5 日 7 月 4 日 7 月 3 日 7 月 2 日 7 月 1 日 6 月 30 日 6 月 29 日 6 月 28 日 6 月 27 日 6 月 26 日 6 月 25 日 6 月 24 日 6 月 23 日
Windows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mac 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

说明

源码
bitbucket.​org

插件单元测试框架

此插件提供延迟测试用例,使你能够从测试用例中运行 sublime 命令并将控制权交给 sublime text,稍后再次获取它。

用法

为您的测试创建一个文件夹。如果您想保持与 sublime text 2 兼容,您不应在主插件文件夹中将它命名为 "tests",因为会与名称冲突。

以下布局是推荐的

  • 我的花哨插件 - my_fancy_plugin

    • __init__.py
    • some_file.py
    • tests - __init__.py - test_first_collection.py - test_second_collection.py
    • My Fancy Plugin.py
    • My Fancy Plugin.sublime-commands
My Fancy Plugin.py
... 是您的主要插件文件,它在变更时会自动由 Sublime Text 重新加载。子系统文件夹中的其他 Python 文件不会自动重新加载。这包含您导出到 sublime text 或其他用途的命令。
My Fancy Plugin.sublime-commands
它必须包含一个启动测试的命令:
[
{ "caption": "My Fancy Plugin: Run Tests",
"command": "run_plugin_unittest", "args": {"module": "My Fancy Plugin.my_fancy_plugin.tests"} }

]

my_fancy_plugin/tests/__init__.py

在每次测试中将传递给 run_plugin_unittest 的模块重新加载。所以这个文件负责重新加载测试所需的所有内容。

# this is the class, which is run by run_plugin_unittest

from imp import reload

# make sure we have got latest changes

from . import test_first_collection
reload(test_first_collection)

from . import test_second_collection
reload(test_second_collection)

from .. import some_file
reload(some_file)

# import all testcases
from .test_first_collection import *
from .test_second_collection import *
my_fancy_plugin/tests/test_first_collection.py

这包含测试用例

from sublime_unittest import TestCase
import sublime

class MyTest(TestCase):

    def test_first(self):
        view = sublime.active_window().open_file("some file")

        while view.is_loading():
            yield     # default is to continue in 10ms

        self.assertEquals(view.name(), "some file")

    def test_second(self):
        view = sublime.active_window().open_file("some file")

        while view.is_loading():
            yield 2   # I specify that sublime shall continue this code in 2ms

        self.assertEquals(view.file_name(), "some file")

以及如此等等...

简单缓冲区测试

你可以创建这样的简单缓冲区测试

from sublime_unittest import *

class MyBufferTest(BufferTest):
    test_cursor = (
        "initial │content of buffer",
        v('move', {'by': 'characters', 'forward': False}),
        "initial│ content of buffer",
        )

    # here buffer is selected
    test_selection = (
        "initial content of ┤buffer├",
        v('insert', {'characters': "view"}),
        "initial content of view│",
    )

    # multiple cursors
    test_multiple_cursors = (
        "initial ┤content├ of bu│ffer",
        v('move', {'by': 'characters', 'forward': True}),
        "initial content │of buf│fer",
        v('insert', {'characters': 'f'}),
        "initial content f│of buff│fer",
    )

    # line assertions
    test_line_assertion = (
        unindent("""
        first ┤line
        second├ l│ine
        """),
        (2, "second├ l│ine")
    )
  • 所有测试名称都必须以 'test' 开头

  • 你指定一个文本命令(或视图命令)使用 v,以及一个窗口命令使用 w。

  • 每个字符串代表一个断言。

  • 你可以根据喜好混合命令和断言。

  • ┤ 和 ├ 包围一个选择和一个 │ 是一个空选择,即光标。

    注意事项

    使用字符表插件,您可以使用快捷键ctrl+k,v,l、ctrl+k,v,r和ctrl+k,v,v来快速输入这些字符

待办事项

  • 在打开面板后,添加了一些TestCase.sendkeys()方法来发送按键

变更

2014-04-16
  • 增加了BufferTest以方便进行缓冲区测试
  • 增加了等待某些条件成立后再继续测试的方法

作者

Kay-Uwe (Kiwi) Lorenz <[email protected]> (http://quelltexter.org)

支持我开发Sublime Text插件的工作: Sublime Text 插件: 通过Paypal捐赠