测试StatsD客户端
项目描述
nti.fakestatsd
nti.fakestatsd是用于验证perfmetrics发出的StatsD指标的测试客户端。
它很容易创建一个用于测试的新客户端
>>> from nti.fakestatsd import FakeStatsDClient
>>> test_client = FakeStatsDClient()
此客户端公开与 perfmetrics.statsd.StatsdClient 相同的公共接口。例如,我们可以增加计数器,设置仪表等
>>> test_client.incr('request_c')
>>> test_client.gauge('active_sessions', 320)
与 perfmetrics.statsd.StatsdClient 不同,~.FakeStatsDClient 仅跟踪将发送的statsd数据包。这些信息既以原始statsd数据包的形式,也以方便的形式作为 ~.Metric 对象公开。有关完整详情,请参阅 ~.FakeStatsDClient 和 ~.Metric。
>>> test_client.packets
['request_c:1|c', 'active_sessions:320|g']
>>> test_client.metrics
[Observation(name='request_c', value='1', kind='c', sampling_rate=None), Observation(name='active_sessions', value='320', kind='g', sampling_rate=None)]
为了验证指标,我们提供了一组用于测试断言的Hamcrest匹配器。
>>> from hamcrest import assert_that
>>> from hamcrest import contains
>>> from nti.fakestatsd.matchers import is_metric
>>> from nti.fakestatsd.matchers import is_gauge
我们可以使用字符串和数字(或任何匹配器)作为值。
>>> assert_that(test_client, ... contains(is_metric('c', 'request_c', '1'), ... is_gauge('active_sessions', 320))) >>> assert_that(test_client, ... contains(is_metric('c', 'request_c', '1'), ... is_gauge('active_sessions', '320'))) >>> from hamcrest import is_ >>> assert_that(test_client, ... contains(is_metric('c', 'request_c', '1'), ... is_gauge('active_sessions', is_('320'))))
如果匹配失败,我们将得到一个描述性的错误。
>>> assert_that(test_client, ... contains(is_gauge('request_c', '1'), ... is_gauge('active_sessions', '320'))) Traceback (most recent call last): ... AssertionError: Expected: a sequence containing [(an instance of Metric and (an object with a property 'kind' matching 'g' and an object with a property 'name' matching 'request_c' and an object with a property 'value' matching '1')), (an instance of Metric and (an object with a property 'kind' matching 'g' and an object with a property 'name' matching 'active_sessions' and an object with a property 'value' matching '320'))] but: item 0: was Metric(name='request_c', value='1', kind='c', sampling_rate=None)
有关完整详情和变更日志,请参阅文档。
变更
1.0.0 (2019-09-03)
该项目已被合并到perfmetrics.testing中。将不再进行进一步开发。
0.0.2 (2018-10-26)
0.0.1 (2018-10-12)
首次PyPI发布。