ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

代码测试工具

2022-02-22 13:59:01  阅读:216  来源: 互联网

标签:__ integers given 代码 st assert test 测试工具


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)

标签:__,integers,given,代码,st,assert,test,测试工具
来源: https://blog.csdn.net/qq_44571444/article/details/108961523

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有