Hamcrest断言框架

一、Hamcrest简介

Hamcrest源于Java,支持多种语言,是用于编写匹配器对象的框架,可以更灵活的定义“匹配”规则。Hamcrest 断言,基于更灵活的 Matchers 断言方式。

二、Hamcrest安装

可以使用常用的python打包工具来安装Hamcrest,也可以在pycharm中安装,下面以在pycharm中安装为例。

1.打开pycharm–》Preferences–》Project Interpreter

2.在搜索框中搜索“hamcrest”,选择第一个“PyHamcrest”,然后点击安装。

三、Hamcrest示例Demo

from hamcrest import *
import unittest

class HamcrestTest(unittest.TestCase):


    def testEquals(self):
        theString = 'Hello Hamcrest'
        myString = 'Hello Hamcrest'
        assert_that()
        assert_that(theString, equal_to(myString))


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

对象
equal_to - 匹配相等对象
has_length - 长度匹配 len()
has_property - 匹配给定名称的属性值
has_properties - 匹配具有所给定属性的对象
has_string - 匹配字符串 str()
instance_of - 匹配对象类型
none, not_none - 匹配none或not none
same_instance - 匹配相同的对象
calling, raises - 封装一个方法调用并断言它引发异常
数字
close_to - 匹配接近给定的数字值
greater_than, greater_than_or_equal_to, less_than, less_than_or_equal_to - 匹配数字顺序
文本
contains_string - 匹配部分字符串
ends_with - 匹配字符串的结尾
equal_to_ignoring_case - 匹配完整的字符串但忽略大小写
equal_to_ignoring_whitespace - 匹配完整的字符串,但忽略多余的空格
matches_regexp - 使用正则表达式匹配字符串
starts_with - 匹配字符串的开头
string_contains_in_order - 按相对顺序匹配字符串的各个部分
逻辑
all_of - 如果所有匹配器都匹配才匹配,像Java里的&&
any_of - - 如果任何匹配器匹配就匹配,像Java里的||
anything - 匹配任何东西,如果不关心特定值则在复合匹配器中很有用
is_not, not_ -如果包装的匹配器不匹配器时匹配,反之亦然
序列
contains - 完全匹配整个序列
contains_inanyorder - 以任何顺序匹配整个序列
has_item - 只要给定项目在序列中出现则匹配
has_items - 如果所有给定项以任意顺序出现在序列中则匹配
is_in - 在给定顺序中如果给定项出现则匹配
only_contains - 在给定顺序中如果序列的项目出现则匹配
empty - 如果序列为空则匹配
字典
has_entries - 匹配具有键值对列表的字典
has_entry - 匹配包含键值对的字典
has_key - 使用键匹配字典
has_value - 使用值匹配字典

装饰器

calling - 在延迟中封装一个可调用对象,在后续的调用行为中匹配
raises - 确保延迟调用可以按预期方式引发
described_as - 添加一个定制的失败表述装饰器
is_ - 改进可读性装饰器
这些匹配器中的许多参数不仅接受匹配值,还接受另一个匹配器,因此可以组合匹配器以提高灵活性。 例如,only_contains(less_than(5))将匹配每个小于5项目的任何序列。

from hamcrest import *

#数字类型
print(0.1*0.1)   #0.010000000000000002
print(assert_that(0.1 * 0.1, close_to(0.01,0.000000000000001)))  #close_to(预期比较的值,数字所对应的值之间最大差值被认为是接近的)
print(assert_that(0.1 * 0.1, greater_than(0.01))) #大于
print(assert_that(0.1 * 0.1, greater_than_or_equal_to(0.01)))  #大于或等于
print(assert_that(0.1 * 0.1, less_than(0.02))) #小于
print(assert_that(0.1 * 0.1, less_than_or_equal_to(0.02)))  #小于或等于

#逻辑
print('***********逻辑*********')
print(assert_that(["a", "b", "c"],all_of(has_items("b", "a"),has_items("c", "a")))) #如果所有匹配器都匹配才匹配,匹配上
print(assert_that(["a", "b", "c"],any_of(has_items("d", "a"),has_items("c", "a")))) #有一个匹配上,就是匹配上
print(assert_that(["a", "b", "c"],is_not("a")))  #如果包装的匹配器不匹配器时匹配,反之亦然
print(assert_that(["a", "b", "c"],is_not(equal_to("a")))) #如果包装的匹配器不匹配器时匹配,反之亦然
print(assert_that(["a", "b", "c"],not_(["a", "b"])))  #如果包装的匹配器不匹配器时匹配,反之亦然
print(assert_that(["a", "b", "c"],anything(1)))  #匹配任何东西,如果不关心特定值则在复合匹配器中很有用返回结果:
0.010000000000000002NoneNoneNoneNoneNone***********逻辑*********NoneNoneNoneNoneNoneNone

 

python之hamcrest断言库_pyhamcrest-CSDN博客文章浏览阅读1.4k次。一、Hamcrest简介Hamcrest源于Java,支持多种语言,是用于编写匹配器对象的框架,可以更灵活的定义“匹配”规则。Hamcrest 断言,基于更灵活的 Matchers 断言方式。二、Hamcrest安装可以使用常用的python打包工具来安装Hamcrest,也可以在pycharm中安装,下面以在pycharm中安装为例。1.打开pycharm–》Preferences–》Project Interpreter2.在搜索框中搜索“hamcrest”,选择第一个“PyHamcrest”_pyhamcresthttps://blog.csdn.net/m0_51709670/article/details/120979261

相关推荐

  1. django框架断言、请求与响应

    2024-04-02 05:28:08       61 阅读
  2. Python的pytest框架(2)--断言机制

    2024-04-02 05:28:08       39 阅读
  3. 断言assert

    2024-04-02 05:28:08       47 阅读
  4. postman断言

    2024-04-02 05:28:08       56 阅读
  5. Python断言

    2024-04-02 05:28:08       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 05:28:08       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 05:28:08       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 05:28:08       87 阅读
  4. Python语言-面向对象

    2024-04-02 05:28:08       96 阅读

热门阅读

  1. 为您的行业选择最合适的服务器

    2024-04-02 05:28:08       40 阅读
  2. 竞赛常考的知识点大总结(七)图论

    2024-04-02 05:28:08       36 阅读
  3. .NET Framework 3.5框架如何使用RSA加密

    2024-04-02 05:28:08       39 阅读
  4. 洛伦兹系统ODE方程-MATLAB

    2024-04-02 05:28:08       30 阅读
  5. 软件测试-第四章课后作业

    2024-04-02 05:28:08       41 阅读
  6. 在保存原容器的情况下重新安装docker

    2024-04-02 05:28:08       40 阅读
  7. http协议中的“队头阻塞”问题

    2024-04-02 05:28:08       38 阅读
  8. 在CentOS 7上如何添加交换空间

    2024-04-02 05:28:08       39 阅读
  9. 告别PCA,开始玩高阶的PLS-DA

    2024-04-02 05:28:08       38 阅读
  10. 如何在Bash中连接字符串变量

    2024-04-02 05:28:08       32 阅读
  11. 「PHP系列」数组详解

    2024-04-02 05:28:08       39 阅读
  12. C#WPF自定义控件-继承Button的圆角按钮

    2024-04-02 05:28:08       31 阅读
  13. pytorch剪枝

    2024-04-02 05:28:08       40 阅读