使用Hypothesis生成测试数据

使用Hypothesis生成测试数据_hypothesis python import unittestclass AddTest(unittest.TestCase): if name == ‘main’: unittest.main() import unittest from random import randintclass AddTest(unittest.TestCase): if name == ‘main’: unittest.main() a-> 11503 b-> -784 a-> -31548 b-> 13057 a-> 22033 b-> 3618 a 阅读详情

一、什么是Hypothesis

    Hypothesis 是python的一个高级测试库,它允许编写测试用例时参数化,然后生成使测试失败的简单易懂的测试呼叫,可以用更少的工作在代码中发现更多的bug。

二、环境准备

安装hypothesis包

py -3 -m pip install hypothesis

三、如何设计测试数据

 

待测试函数:
def add(a,b):

    """实现加法运算"""

    return a+b

 

3.1 传统测试方法

 

import unittest

from test import add

class AddTest(unittest.TestCase):

    def test_case1(self):

        c=add(1,2)

        self.assertEqual(c,3)

    def test_case2(self):

        c=add(0,2)

        self.assertEqual(c,2)

    def test_case3(self):

        c=add(-2,2)

        self.assertEqual(c,0)

 

if __name__=="__main__":

    unittest.main()

 

不足:需要设计足够多的测试case

 

3.2 优化版:使用randint()函数生成随机数

 

import unittest

from test import add

from random import randint

class AddTest(unittest.TestCase):

    def test_case(self):

        for i in range(10):

            a=randint(-32768,32767)

            b=randint(-32768,32767)

            print(a,b)

            c1=a+b

            c2=add(a,b)

            self.assertEqual(c1,c2)

 

if __name__=="__main__":

    unittest.main()

 

好处:用更少的代码做更多的测试,循环次数越多,发现Bug概率越大

不足:测试数据很难随机到边界值

 

 

3.3 用hypothesis生成测试数据

 

import unittest

from test import add

from hypothesis import given,settings

import hypothesis.strategies as st

class AddTest(unittest.TestCase):

    @settings(max_examples=10)

    @given(a=st.integers(),b=st.integers())

    def test_case(self,a,b):

        print(a,b)

        c1=a+b

        c2=add(a,b)

        self.assertEqual(c1,c2)

 

if __name__=="__main__":

    unittest.main()

 

注释:

    通过@given()装饰测试用例,调用strategies模块下面的integers()方法生成随机的测试数。在@setting()装饰器中通过max_examples用来控制随机数的个数。

 

 

 

3.4 生成更多类型的测试数据

 

import unittest

from hypothesis import given,settings

import hypothesis.strategies as st

class AddTest(unittest.TestCase):

    @settings(max_examples=10)

    @given(a=st.text(),b=st.emails())

    #生成text格式和email格式

    def test_case(self,a,b):

        print(a,b)

 

if __name__=="__main__":

    unittest.main()

 

 

更多的数据类型:

import hypothesis

dir(hypothesis.strategies)

 

 

 

Hypothesis 是一个高级基于属性的 Quickcheck 风格特性的测试Python库-python Hypothesis 是一个高级基于属性的 Quickcheck 风格特性的测试Python库 Hypothesis Hypothesis 是一个用于 Python 的高级测试库。 它允许您编写由示例源参数化的测试,然后生成简单易懂的示例,使您的测试失败。 这使您可以用更少的工作在代码中发现更多错误。 例如@given(st.lists(st.floats(allow_nan=False, allow_infinity=False), min_size=1)) def test_mean(xs): assert min(xs) <= mean(xs) <= max(xs) 伪造示例: test_mean( xs=[1.7976321109618856e+308, 6.102390043022755e+303] ) 假设非常实用,并以某种方式推进了单元测试的最新技术。 它易于使用、稳定且功能强大。 如果您没有使用 Hypothesis 来测试您的项目,那么您就错过了。 感兴趣的链接 主要假设站点位于假设.works,其中包含许多很好的介绍性和解释性材料。 rea 立即下载

相关推荐

Python库 | hypothesis_jsonschema-0.10.2-py3-none-any.whl

python库。 资源全名:hypothesis_jsonschema-0.10.2-py3-none-any.whl

Python自动化测试九章经

手工测试中遇到的坑 你踩过几个? 解锁自动化测试技能 打破手工测试局限 自动化测试是测试工作的一部分,是对手工测试的一种补充。自动化测试是相对手工测试而存在的,通过所开发的软件测试工具、脚本等来实现,具有良好的可操作性、可重复使用和高效率等特点。 Python自动化测试 系统教学+实战分析 简单易上手 课程使用的是语法简洁、提供丰富的测试库和框架的Python语言,并从测试人员的角度,梳理当前最热门的自动化测试框架和常用库,并通过实战,带你快速建立自动化测试技术体系,让测试工作更高效! 3个项目实战 全程手敲代码演示 听得懂 更要会用 3大购课福利

Python基于Hypothesis测试库生成测试数据

主要介绍了Python基于Hypothesis测试库生成测试数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

hypothesis,一个超强的 Python 库!

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在属性测试中,可以使用假设来限定输入数据的范围或属性。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

Trb201012的博客 1679

Lumerical官方案例、FDTD时域有限差分法仿真学习(十八)——Y分支粒子群算法优化

组件优化是任何致力于开发高性能光子器件的设计过程的关键步骤。 此绝缘体上硅 Y 分支示例演示了适用于任意优化例程的通用组件形状参数化方法。 此示例中的算法是 Lumerical 的内置粒子群优化 (PSO),可通过用户界面轻松设置。 此外,建议的优化过程展示了如何将 varFDTD 与全 3D FDTD 求解器相结合,以显着减少优化时间,同时保持高精度。

weixin_45719141的博客 1万+

标准恢复二极管整流器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

报告页数: 150 图表数: 100 报告价格:¥16800 本文研究全球与中国市场标准恢复二极管整流器的发展现状及未来发展趋势,分别从生产和消费的角度分析标准恢复二极管整流器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。 主要生产商包括: Yangzhou Yangjie Vishay Intertechnology Power Semiconductors Inc Nexperia B

Fj69258的博客 5849

python生成测试数据_Python基于Hypothesis测试库生成测试数据

Hypothesis是Python的一个高级测试库。它允许编写测试用例时参数化,然后生成使测试失败的简单易懂的测试数据。可以用更少的工作在代码中发现更多的bug。安装pip install hypothesis如何设计测试数据通过介绍也许你还不了解它是干嘛的,没关系!我们举个例子。首先,我有一个需要测试的函数:def add(a, b):"""实现加法运算"""return a + b测试代码是这...

weixin_29111953的博客 816

三维重建笔记_光束平差法(Bundle Adjustment, BA)

目录 1 光束平差法(Bundle Adjustment, BA) 1.1 SFM (Structure‐from‐Motion) 定义 问题描述 1.2 重投影误差 (Reprojection Error) 目标函数 1.3 使用 Levenberg‐Marquardt Algorithm 进行优化 问题描述 简化目标函数 参考 Gauss‐Newton Method ...

惊鸿一博 2万+

使用Hypothesis生成测试数据_hypothesis python,跟软件测试初学者分享几点经验

循环10次(也可以是100次,1000次),用更少的代码做更多的测试,测试的数据越多,发现bug的可能性越大。(img-JqUg0QcS-1713193596873)],除非我手动设计数据,而且用for循环也不是太好的设计。的朋友,可以添加V获取:vip1024b (备注软件测试)**当然,为了测试足够多的数据,我们也可以将代码改称这样。函数,我必须设计足够多的。, 同样也需要很多条用例!上面的测试数据很难随机到。方法生成随机的测试数。“”“实现加法运算”“”用来控制随机数的个数。

2401_84266286的博客 820

ASIC--DFT可测性设计工程师

DFT是什么? DFT是design for test(可测性设计)的缩写,就是在芯片设计过程中,加入可测性逻辑。有的公司把该职位归到前端设计,有的归到中端实现。 DFT职位大多分布于规模较大的数字IC设计公司里,因为大公司对芯片品质要求高,而且规模越大,芯片越贵,DFT就越复杂越重要。DFT主要是通过在芯片中加入可测性逻辑,等芯片制造出来,在ATE(AutomaticTestEquipmen...

TroubleMaker 2万+

STM32Cubemx+CanFestival:从零到一的CANopen移植实战

本文详细介绍了如何使用STM32CubeMX和CanFestival实现CANopen协议栈的移植,从开发环境搭建到核心配置步骤,再到调试与问题排查。通过实战经验分享,帮助开发者快速掌握STM32与CANopen的结合应用,提升嵌入式系统开发效率。

weixin_42558093的博客 420

使用Hypothesis生成测试数据_hypothesis python,不同层级的软件测试开发者的不同行为

循环10次(也可以是100次,1000次),用更少的代码做更多的测试,测试的数据越多,发现bug的可能性越大。(img-gAqqg0uC-1713460376588)],除非我手动设计数据,而且用for循环也不是太好的设计。的朋友,可以添加V获取:vip1024b (备注软件测试)**当然,为了测试足够多的数据,我们也可以将代码改称这样。函数,我必须设计足够多的。, 同样也需要很多条用例!上面的测试数据很难随机到。方法生成随机的测试数。“”“实现加法运算”“”用来控制随机数的个数。

2401_84301389的博客 480

基于Python的全卷积网络(FCN)实现路径损耗预测

本文提出一种基于全卷积网络(FCN)的无线信道路径损耗预测方法。通过合成数据生成模块构建包含房间布局和发射点坐标的训练数据集,采用双分支FCN架构融合空间特征与坐标信息,引入空间注意力机制增强关键区域提取。实验表明,该方法相比传统模型能更准确地预测复杂环境下的路径损耗,平均绝对误差降低约35%。系统支持端到端训练,可扩展融合多模态数据,为5G网络规划等应用提供高效预测工具。

huanghm88的专栏 578

使用Hypothesis生成测试数据_hypothesis python(1),软件测试面试自我介绍范文

循环10次(也可以是100次,1000次),用更少的代码做更多的测试,测试的数据越多,发现bug的可能性越大。hypothesis 还可以生成更多类型的测试数据。例如 email格式和text格式。(img-ypmgH4au-1713460352563)],除非我手动设计数据,而且用for循环也不是太好的设计。的朋友,可以添加V获取:vip1024b (备注软件测试)**hypothesis 生成的数据会更具有。上面的测试数据很难随机到。方法生成随机的测试数。用来控制随机数的个数。

2401_84301389的博客 495

【Charge】仿真目录

Author: JiJi\textrm{Author: JiJi}Author: JiJi Created Time: 2026.01.20\textrm{Created Time: 2026.01.20}Created Time: 2026.01.20 Modified Time: 2026.01.20\textrm{Modified Time: 2026.01.20}Modified Time: 2026.01.20工作流程材料模型[Charge] 电荷分布与折射率变化理论 [Charge] FDTD

u011699626的博客 314

【推荐100个unity插件】将UE的资源导出到unity使用—— Exporter for Unreal to/for Unity插件

Unreal to Unity导出器是一款帮助开发者将Unreal Engine项目转换为Unity的工具。文章详细介绍了使用步骤:1)安装虚幻引擎并创建项目;2)在Plugins文件夹中安装导出插件;3)导入UE资产到Content文件夹;4)配置导出参数并完成转换。文末推荐了多个Unity开发专栏,涵盖C#编程、2D/3D开发、特效制作等内容。作者向宇提供了博客地址,欢迎读者交流学习。该工具能有效提升项目迁移效率,适合需要跨引擎开发的用户使用。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 850

Hypothesis-JSONSchema 使用教程

Hypothesis-JSONSchema 使用教程 项目介绍 Hypothesis-JSONSchema 是一个开源项目,它允许用户从 JSON 模式生成测试数据。这个项目是基于 Hypothesis 库开发的,Hypothesis 是一个强大的库,用于在 Python 中进行基于属性的测试。通过 Hypothesis-JSONSchema,开发者可以轻松地生成符合特定 JSON 模式的测试数据...

gitblog_00732的博客 883

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Python基于属性的测试库Hypothesis 介绍和使用

测试用例中我们定义了两个随机浮点数作为输入,并使用 `assert` 语句验证了被测函数 `divide` 的行为是否满足属性(即除法的逆运算)。在 Python 中,Hypothesis 是一个基于属性的测试库,它用于支持测试驱动开发(TDD)和属性-based testing。它提供了丰富的数据生成策略,使得测试用例可以覆盖更广泛的输入空间,从而提高测试的质量和全面性。通过这种方式,Hypothesis 将自动生成大量的随机测试数据,并运行测试函数,以便发现潜在的 bug 或异常情况。

captain 899

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Python 中的 hypothesis:属性测试神器

在编写单元测试时,我们通常会手动构造几个典型的测试用例来验证函数是否正确。但这种方式容易遗漏边界条件或特殊输入,导致测试覆盖率不足。 Hypothesis 是一个非常强大的测试库,它基于“属性测试”(Property-Based Testing)的理念,自动生成大量测试数据,帮助你发现那些人工难以想到的边界情况。

伤心的辣条 779

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Hypothesis测试框架与Asyncio:异步代码测试指南

在现代Python开发中,异步编程(Asyncio)已成为处理高并发I/O操作的首选方案。然而,异步代码的测试一直是开发人员面临的挑战。Hypothesis测试框架通过其强大的属性基测试(Property-Based Testing)能力,为异步代码测试提供了可靠的解决方案。本文将详细介绍如何使用Hypothesis结合Asyncio进行异步代码测试,帮助开发人员构建更健壮的异步应用。 ## 异...

gitblog_00754的博客 976
上一篇: 单元测试
下一篇: 常用的设计模式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值