Redis

Testsuite provides basic support for redis.

Environment variables

TESTSUITE_REDIS_MASTER_PORTS

Use to override redis master ports. Two comma separated integers. Default is 16379, 16389.

TESTSUITE_REDIS_SENTINEL_PORT

Use to override sentinel server port. Default is 26379.

TESTSUITE_REDIS_SLAVE_PORTS

Use to override redis secondary server ports. Three comma separated integers. Default is 16380, 16390, 16381.

TESTSUITE_REDIS_CLUSTER_PORTS

Use to override redis cluster server ports. Six comma separated integers. Default is 17380, 17381, 17382, 17383, 17384, 17385.

TESTSUITE_REDIS_CLUSTER_REPLICAS

Use to override number of replicas per master in redis cluster. Default is 1.

Fixtures

redis_store

Provide access to non cluster redis via same interface as redis.StrictRedis().

import pytest

pytest_plugins = [
    'testsuite.pytest_plugin',
    'testsuite.databases.redis.pytest_plugin',
]


def test_redis_basic(redis_store):
    redis_store.set('somekey', 'somedata')
    assert redis_store.get('somekey') == b'somedata'

redis_cluster_store

Provide access to cluster redis via same interface as redis.RedisCluster().

import pytest

pytest_plugins = [
    'testsuite.pytest_plugin',
    'testsuite.databases.redis.pytest_plugin',
]


def test_redis_basic(redis_cluster_store):
    redis_cluster_store.set('somekey', 'somedata')
    assert redis_cluster_store.get('somekey') == b'somedata'

redis_cluster_nodes

Provides the list of redis cluster nodes.

redis_cluster_replicas

Gives the number of replicas per primary node in redis cluster.

Marks

pytest.mark.redis_store

Specify custom per-test data for redis_store fixture

import pytest

pytest_plugins = [
    'testsuite.pytest_plugin',
    'testsuite.databases.redis.pytest_plugin',
]

@pytest.mark.redis_store(
    ['set', 'foo', 'bar'],
    ['hset', 'baz', 'quux', 'bat'],
)
def test_redis_marker_store(redis_store):
    assert redis_store.get('foo') == b'bar'
    assert redis_store.hgetall('baz') == {b'quux': b'bat'}

@pytest.mark.redis_store(file='use_redis_store_file')
def test_redis_store_file(redis_store):
    assert redis_store.get('foo') == b'store'

pytest.mark.redis_cluster_store

Specify custom per-test data for redis_cluster_store fixture

import pytest

pytest_plugins = [
    'testsuite.pytest_plugin',
    'testsuite.databases.redis.pytest_plugin',
]

@pytest.mark.redis_cluster_store(
    ['set', 'foo', 'bar'],
    ['hset', 'baz', 'quux', 'bat'],
)
def test_redis_marker_store(redis_cluster_store):
    assert redis_cluster_store.get('foo') == b'bar'
    assert redis_cluster_store.hgetall('baz') == {b'quux': b'bat'}

@pytest.mark.redis_cluster_store(file='use_redis_store_file')
def test_redis_store_file(redis_cluster_store):
    assert redis_cluster_store.get('foo') == b'store'