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

岩石

作者: jonesambrosi 全部

本项目对Python在SublimeText上进行实时自动化代码覆盖率测试进行持续集成测试。此插件简化了开发过程,并可以快速检测问题。

详细信息

安装

  • 总数 59
  • Win 31
  • Mac 13
  • Linux 15
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 1 1 0 0 0 0 0 0 1 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

说明文件

源代码
raw.​githubusercontent.​com

岩石

本项目对Python在SublimeText上进行实时自动化代码覆盖率测试进行持续集成测试。此插件简化了开发过程,并可以快速检测问题。

此项目灵感来源于NCrunch插件。目前没有找到类似用于Python的项目。

UI

Example

使用Rocks.tmTheme查看图标中的颜色。如果您使用另一主题,请在所使用的tmTheme文件中添加以下行。

... 
    <string>Sunburst</string>
    <key>settings</key>
    <array>
... 


<dict>
    <key>name</key>
    <string>markup.tracked.rocks</string>
    <key>scope</key>
    <string>markup.tracked.rocks</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#41a017</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>markup.untracked.rocks</string>
    <key>scope</key>
    <string>markup.untracked.rocks</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#AAAAAA</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>markup.skipped.rocks</string>
    <key>scope</key>
    <string>markup.skipped.rocks</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#FFF380</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>markup.error.rocks</string>
    <key>scope</key>
    <string>markup.error.rocks</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#FF0000</string>
    </dict>
</dict>

... 
</array>

提议的功能

版本1 - 完成

  • 自动检测代码覆盖率
  • 更好的UI来检测覆盖率的不一致性

版本2

  • 检测代码影响和系统的关键性
  • 开发指标
  • 简单地在检测到的问题中进行导航

版本3

  • 集成linty系统
  • 优化建议

未来版本

  • 测试分发
  • 集成测试系统(tox, nunit等)

局限性

  • 覆盖率测试在Django项目中无法工作。

示例

文件 class_a.py

import time


class A(object):

    def __init__(self):
        self.value = "Some Value"

    def return_true(self):
        return True

    def raise_exc(self, val):

        if val == "TDD":
            return True

        raise ValueError(val)

    def repeat(self):
        return 1

    def sleeping_half_second(self):
        time.sleep(0.5)  # Warning running, show extra info warning

    def sleeping(self):
        time.sleep(1)  # Long running, show extra info slow

    def sleeping_more_one_seconds(self):
        # Long running greater than 1 seconds, show extra info slower
        time.sleep(1.1)

文件 test_coverage.py

import unittest
from class_a import A


class TestSimple(unittest.TestCase):
    """Simple test coverage"""

    def test_pass(self):
        assert True

    # def test_fail(self):
    #     assert False

    # def test_fail_2(self):
    #     assert 2 == 1

    def test_init(self):
        a = A()

        assert a.return_true()

    def test_sleeping_half_second(self):
        a = A()
        a.sleeping_half_second()

        assert True

    def test_sleeping(self):
        a = A()
        a.sleeping()

        assert True

    def test_sleeping_more_one_seconds(self):
        a = A()
        a.sleeping_more_one_seconds()

        assert True

    def test_exception(self):
        a = A()

        assert a.raise_exc("DDD")

        return

        # Check code not reached in coverage
        d = 1 + 2 + 3