测试辅助工具集合。
项目描述
cykooz.testing 是测试辅助工具的集合。
工具
Dict
一个字典对象,可以在不考虑未出现在 Dict 实例中的键的情况下与其他字典对象进行比较。
>>> from cykooz.testing import Dict
>>> expected = Dict(a=1, b='foo')
>>> d1 = {'a': 1, 'b': 'foo', 'c': True}
>>> d1 == expected
True
>>> d1 != expected
False
>>> d2 = {'a': 1, 'c': True}
>>> d2 == expected
False
>>> d1 != d2
True
>>> Dict({'a': 1})
Dict({'a': 1})
简写别名
>>> from cykooz.testing import D
>>> {'a': 1, 'b': 'foo'} == D({'a': 1})
True
List
一个列表对象,可以在不考虑其他列表对象中包含的额外项目的情况下与其他列表对象进行比较。
>>> from cykooz.testing import List
>>> expected = List([1, 'foo'])
>>> l1 = [1, 'foo', True]
>>> l1 == expected
True
>>> l1 != expected
False
>>> l2 = [1, True]
>>> l2 == expected
False
>>> l2 != expected
True
>>> expected == [1]
False
>>> [{'a': 1}, {'b': 2}] == List([Dict(), Dict()])
True
也支持在不考虑项目顺序的情况下进行比较。
>>> expected = List([True, 1], ignore_order=True)
>>> l1 = [1, 'foo', True]
>>> l1 == expected
True
>>> l1 != expected
False
>>> [{'a': 1}, {'b': 2}] == List([Dict(), Dict()], ignore_order=True)
Traceback (most recent call last):
...
TypeError: unhashable type: 'Dict'
简写别名
>>> from cykooz.testing import L
>>> [1, 'foo', True] == L([1, 'foo'])
True
AnyValue
此类的实例等于任何其他值。
>>> from cykooz.testing import AnyValue
>>> v = AnyValue()
>>> v == 1
True
>>> 1 == v
True
>>> v != 1
False
>>> v == {'a': 1, 'b': 'foo'}
True
>>> v == [1, 2, 3, 'b']
True
>>> v == AnyValue()
True
>>> v
<any value>
>>> {v: 1}
Traceback (most recent call last):
...
TypeError: unhashable type: 'AnyValue'
>>> [v, v, v] == [1, 2, 'foo']
True
>>> [v, v, 1] == [1, 2, 'foo']
False
>>> [v, v] == [1, 2, 'foo']
False
>>> {'a': v, 'b': 2} == {'a': 1, 'b': 2}
True
简写别名
>>> from cykooz.testing import ANY
>>> 1 == ANY
True
RegExpString
如果此类的实例匹配给定的正则表达式模式,则等于任何其他值。
>>> from cykooz.testing import RegExpString
>>> v = RegExpString('first.*')
>>> v == 1
False
>>> 1 == v
False
>>> v != 1
True
>>> v == 'first class'
True
>>> 'first class' == v
True
>>> v != 'first class'
False
>>> v
<RegExpString: first.*>
>>> {v: 1}
Traceback (most recent call last):
...
TypeError: unhashable type: 'RegExpString'
>>> [v, v, v] == [1, 2, 'first class']
False
>>> [v, v, v] == ['first class', 'first bus', 'first time']
True
简写别名
>>> from cykooz.testing import R
>>> 'first class' == R('first.*')
True
Url
一个URL对象,可以在不考虑查询字符串中编码、转义和参数顺序的任意性方面与其他URL对象进行比较。
>>> from cykooz.testing import Url
>>> url1 = Url('https://domain.com/container?limit=6&offset=0')
>>> url2 = Url('https://domain.com/container?offset=0&limit=6')
>>> url1 == url2
True
>>> url2 = Url('https://domain.com/container?limit=6')
>>> url1 == url2
False
>>> url1 == 'https://domain.com/container?offset=0&limit=6'
True
>>> 'https://domain.com/container?offset=0&limit=6' == url1
True
>>> {'key': 'https://domain.com/container?offset=0&limit=6'} == {'key': url1}
True
Json
此类的实例将与任何 'bytes' 或 'str' 值相等,如果从该值解码的JSON解码器对象等于此类的第一个参数。
>>> from cykooz.testing import Json
>>> v = Json({'foo': 1, 'bar': 'hello'})
>>> other = '{"bar": "hello", "foo": 1}'
>>> v == other
True
>>> other == v
True
>>> other != v
False
>>> v == 1
False
>>> 1 == v
False
>>> v != 1
True
>>> v == 'not json'
False
>>> 'not json' == v
False
>>> v != 'not json'
True
>>> v
<Json: {'foo': 1, 'bar': 'hello'}>
>>> {v: 1}
Traceback (most recent call last):
...
TypeError: unhashable type: 'Json'
>>> [v, v, v] == [other, 2, 'first class']
False
>>> [v, v, v] == [other, other, other]
True
>>> '"json str"' == Json('json str')
True
复杂示例
>>> from cykooz.testing import D, L, R, J, Url, ANY
>>> some_value = {
... 'created': '2020-04-14T12:34:00.002000+00:00',
... 'is_active': True,
... 'items': [
... {'key': 'a', 'value': 1},
... {'key': 'b', 'value': 2},
... {'key': 'c', 'value': 3},
... ],
... 'source': 'https://domain.com/item?p=0&t=total',
... 'response': '{"status": 200, "body": "OK"}',
... 'size': 1024,
... }
>>> some_value == D({
... 'created': R('^2020-04.*'),
... 'is_active': True,
... 'items': L([
... {'key': 'a', 'value': 1},
... D({'value': ANY}),
... ]),
... 'source': Url('https://domain.com/item?t=total&p=0'),
... 'response': J({'status': 200, 'body': ANY}),
... })
True
变更日志
1.2 (2021-08-27)
更改
将 ignore_order 参数添加到 List 辅助函数中,以便在不考虑项目顺序的情况下比较列表。
1.1.2 (2020-04-14)
错误修复
将新的辅助函数添加到 __all__ 中。
1.1 (2020-04-14)
功能
添加了新的辅助函数 Json。
1.0.3 (2020-03-20)
错误修复
修复了命名空间声明。
1.0.1 (2019-07-12)
错误修复
修复了“开发状态”的包。
1.0 (2019-07-12)
功能
首次发布。
项目详情
关闭
cykooz.testing-1.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 30ca4afc49cea29573ea4a18eab8a2ab11b4f5bb3193843cd6cf059cc16cb68f |
|
MD5 | cbed3a9234d979bcbef40fcacba5658b |
|
BLAKE2b-256 | ea237c4780f6f6e360d8fea57542252bdafeaee9a4edbfabcd1eded93ea37b5f |
关闭
cykooz.testing-1.2-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 58e56a74a411e5468cff5b11eb0cc7b6fef6c380af3f7f062f89fd05f47ebc89 |
|
MD5 | bcae81d09c0e8d1f76238ee37f58d182 |
|
BLAKE2b-256 | 9a3e45e41dafbd5e12738b7e2b1879ad8012cdb2e4e067583f794c806fdbc1f3 |