一、什么是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生成测试数据相关推荐

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

    Hypothesis是Python的一个高级测试库.它允许编写测试用例时参数化,然后生成使测试失败的简单易懂的测试数据.可以用更少的工作在代码中发现更多的bug. 安装 pip install hyp ...

  2. 调试与对拍(一):生成测试数据+对拍

    今天打比赛时令小编很气愤,隔壁LSH有文件运行错误,重提了一遍老师就收,而小编重提却爱搭不理,于是小编决定还是自己造个数据把代码重测一遍,于是潜心钻研生成测试数据的方法. 其实很简单,用随机数生成器生 ...

  3. mysql 测试数据的脚本_Mysql脚本 生成测试数据

    Mysql脚本 生成测试数据 使用: ./xie.sh -uroot -p'123456' #!/bin/bash #混合测试数据库脚本 #将创建一个single数据库,其中创建一个s1表 #如果数据 ...

  4. mysql重新创建测试对象的SQL_MySQL_Sql_打怪升级_进阶篇_测试: SQL随机生成测试数据...

    1.随机生成测试数据 目标:创建一张表,插入随机的行数,生成测试所需的数据. 2.测试所需环境准备 库名:userdatabase 表名:test_user_table 字段 需求 uname 6字符 ...

  5. 通过 Python_Faker 生成测试数据

    通过 Python_Faker 生成测试数据 一.介绍 在软件需求.开发.测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,你不可能通过手工来生成(最傻的方法)可能 ...

  6. 网上论坛生成测试数据方法(抢分利器)

    在网上回复问题时,生成测试数据是必不可少的 1.在master系统库生成存储过程方法 USE master go IF object_id('SP_Script') is not nulldrop p ...

  7. 软件测试自动生成测试数据,软件测试中测试数据的自动生成方法浅析

    一.引言 软件质量是制约计算机应用领域进一步发展的关键要素之一,保证软件质量.提高软件可靠性的重要手段是软件测试.软件测试中最关键的问题是测试数据的设计,它主要涉及两个方面,一是测试 数据生成,是测试 ...

  8. java faker_Java基于Javafaker生成测试数据

    1. 前言 老板说,明天甲方要来看产品,你得造点数据,而且数据必须是"真"的,演示效果要好看一些,这样他才会买我们的产品,我好明年给你换个嫂子.一般开发接到这种过分要求都不会很乐意 ...

  9. 如何使用TPC-DS生成测试数据并导入MySQL

    测试环境 centos7 mysql搭建指南可参考:https://lrting.top/backend/2111/ 安装依赖: yum install gcc make flex bison bya ...

最新文章

  1. Go语言调度器之调度main goroutine(14)
  2. POJ 1840 Eqs 解方程式, 水题 难度:0
  3. asp.net中的参数传递:Context.Handler 的用法
  4. centos7离线安装mysql_Centos7离线安装metasploit详细教程
  5. 无法开启计算机,Win7下鼠标右键无法开启计算机属性怎么办?
  6. 面试题9:斐波那契数列
  7. LeetCode:63. 不同路径 II(python、c++)
  8. c# 开发ActiveX控件
  9. 使用GreenSock插件轻松制作精美的Web动画
  10. 移动端车牌识别可以识别新能源汽车
  11. 17家IT初创公司失败史
  12. 最近大火的chatGPT是什么?它是怎样聊天的?
  13. js设置长按esc退出全屏;拦截所有所有按键事件;全屏模式下拦截esc按键;javascript;chrome
  14. 迈向更小的.NET 4-有关客户端配置文件和下载.NET的详细信息
  15. IDA PRO:庆祝成立创新 30 周年
  16. 如何批量的将jpg文件转换为png格式
  17. 五点三次平滑的程序源代码
  18. MySQL将查询结果用英文逗号,连接
  19. Wi-Fi安全与攻击案例分析
  20. Selenium自动化测试网页加载太慢怎么办

热门文章

  1. 节日营销方案:你值得关注的6个策略!
  2. Excel学习笔记1||求和函数SUM、SUMIF、SUMIFS、SUMPRODUCT
  3. R语言 cor与lm
  4. Powershell-批量重命名替换文件名
  5. 货币供应量(年底余额)的意义,如何获取
  6. 写在迷茫痛苦之后的三十岁
  7. 【python】文件读取写 open的方式with的方式 异常报错处理
  8. scp传输文件时指定端口
  9. C++基础知识(常函数)
  10. 人工智能,机器学习,深度学习培训,课程大纲