代码测试工具

Hypothesis

初识

Hypothesis是一个Python库,用于创建单元测试,该单元测试编写起来更简单,运行时功能更强大,可以在您不需要的代码中查找极端情况。它稳定,强大且易于添加到任何现有测试套件中。

它的工作原理是让您编写断言每种情况都应该正确的测试,而不仅仅是您偶然想到的那些。

它通过生成与您的规范匹配的任意数据并检查在这种情况下您的保证仍然有效来工作。如果找到了一个没有的示例,它将采用该示例并将其缩减为一定尺寸,然后对其进行简化,直到找到一个仍然会导致问题的更小的示例。然后将其保存到以后的示例中,以便一旦发现您的代码有问题,将来就不会忘记它。

安装

pip install hypothesis

如果要直接从源代码安装(例如,因为要进行更改并安装更改的版本),请查看CONTRIBUTING.rst中的说明

运行测试

f __name__ == "__main__":
    test_decode_inverts_encode()

还能这样用

import unittest


class TestEncoding(unittest.TestCase):
    @given(text())
    def test_decode_inverts_encode(self, s):
        self.assertEqual(decode(encode(s)), s)


if __name__ == "__main__":
    unittest.main()

编写测试

from hypothesis import given
import hypothesis.strategies as st


@given(st.integers(), st.integers())
def test_ints_are_commutative(x, y):
    assert x + y == y + x


@given(x=st.integers(), y=st.integers())
def test_ints_cancel(x, y):
    assert (x + y) - y == x


@given(st.lists(st.integers()))
def test_reversing_twice_gives_same_list(xs):
    # This will generate lists of arbitrary length (usually between 0 and
    # 100 elements) whose elements are integers.
    ys = list(xs)
    ys.reverse()
    ys.reverse()
    assert xs == ys


@given(st.tuples(st.booleans(), st.text()))
def test_look_tuples_work_too(t):
    # A tuple is generated as the one you provided, with the corresponding
    # types in those positions.
    assert len(t) == 2
    assert isinstance(t[0], bool)
    assert isinstance(t[1], str)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农先生eee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值