%global _empty_manifest_terminate_build 0 Name: python-django-fakeredis Version: 0.1.2 Release: 1 Summary: Easier to use fakeredis in Django. License: Apache Software License URL: https://github.com/o3o3o/django-fakeredis Source0: https://mirrors.nju.edu.cn/pypi/web/packages/76/4a/01fdaec3b03dde52128de835c2ae17f1a130e922d118ed544c9e39ce8bfc/django-fakeredis-0.1.2.tar.gz BuildArch: noarch Requires: python3-fakeredis Requires: python3-redis Requires: python3-django-redis %description [![CircleCI](https://circleci.com/gh/o3o3o/django-fakeredis.svg?style=svg)](https://circleci.com/gh/o3o3o/django-fakeredis) Easier use [fakeredis](https://pypi.org/project/fakeredis) in Django. ### Install ``` pip install django-fakeredis ``` ## Why use it? I have experienced many times to find bugs which is caused by mutiple fakeredis instances in tests. We just want to use fakerredis like redis with one redis-server and different connections and can debug with MONITOR command in redis ### Features: * One fakeredis server with mutiple connections for tests like the way of using redis. * Combine override settings to Local-memory and fake [get_redis_connection](https://github.com/niwinz/django-redis), [django's cache](https://docs.djangoproject.com/en/2.2/topics/cache/) * To disable the fake action with passing env: "NOFAKE_REDIS=1" `NOFAKE_REDIS=1 python manage.py test` Before you use `django_fakeredis`, your tests code maybe like that: ```python server = fakeredis.FakeServer() @override_settings(CACHES={"default": {"BACKEND": "django.core.cache.backends.dummy.DummyCache" }}) @patch('foo.get_redis_connection', fakeredis.FakeRedis(server=server) def test_sth(): .... ``` Now your can just: ```python @FakeRedis("yourpath.get_redis_connection") def test_sth(): ... ``` ### Usage ```python from django_fakeredis import FakeRedis @FakeRedis("yourpath.get_redis_connection") def test_foo(): ... ``` ```python from django_fakeredis import FakeRedis with FakeRedis("yourpath.get_redis_connection"): foo() ``` ```python from django_fakeredis import FakeRedis with FakeRedis("yourpath.cache"): foo() ``` #### NOTE 1. If you want to mock `django.core.cache.cache` with fakeredis, django-fakeredis do nothing but just override CACHE settings into [Local-Memory](https://docs.djangoproject.com/en/2.2/topics/cache/#local-memory-caching) for using the internal cast. So there are two mocked redis instance for django.cache and get_redis_connection . If you want to use more redis commands, such as: sets, list..., you may need use [django_redis]((https://github.com/niwinz/django-redis)), and cast the result by hand. django.cache: ``` from django.core.cache import cache cache.set("key", 2) assert cache.get("key") == 2 ``` you have to cast by hand, when using fakeredis or django_redis directly, you have to cast by hand: ``` import fakeredis con = fakeredis.FakeStrictRedis() con.set("key", 2) assert con.get("key").decode('utf8') == "2" ``` 2. if you have a problem that mock is not worked, you may should to see [where to patch](https://docs.python.org/3/library/unittest.mock.html#where-to-patch) %package -n python3-django-fakeredis Summary: Easier to use fakeredis in Django. Provides: python-django-fakeredis BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-django-fakeredis [![CircleCI](https://circleci.com/gh/o3o3o/django-fakeredis.svg?style=svg)](https://circleci.com/gh/o3o3o/django-fakeredis) Easier use [fakeredis](https://pypi.org/project/fakeredis) in Django. ### Install ``` pip install django-fakeredis ``` ## Why use it? I have experienced many times to find bugs which is caused by mutiple fakeredis instances in tests. We just want to use fakerredis like redis with one redis-server and different connections and can debug with MONITOR command in redis ### Features: * One fakeredis server with mutiple connections for tests like the way of using redis. * Combine override settings to Local-memory and fake [get_redis_connection](https://github.com/niwinz/django-redis), [django's cache](https://docs.djangoproject.com/en/2.2/topics/cache/) * To disable the fake action with passing env: "NOFAKE_REDIS=1" `NOFAKE_REDIS=1 python manage.py test` Before you use `django_fakeredis`, your tests code maybe like that: ```python server = fakeredis.FakeServer() @override_settings(CACHES={"default": {"BACKEND": "django.core.cache.backends.dummy.DummyCache" }}) @patch('foo.get_redis_connection', fakeredis.FakeRedis(server=server) def test_sth(): .... ``` Now your can just: ```python @FakeRedis("yourpath.get_redis_connection") def test_sth(): ... ``` ### Usage ```python from django_fakeredis import FakeRedis @FakeRedis("yourpath.get_redis_connection") def test_foo(): ... ``` ```python from django_fakeredis import FakeRedis with FakeRedis("yourpath.get_redis_connection"): foo() ``` ```python from django_fakeredis import FakeRedis with FakeRedis("yourpath.cache"): foo() ``` #### NOTE 1. If you want to mock `django.core.cache.cache` with fakeredis, django-fakeredis do nothing but just override CACHE settings into [Local-Memory](https://docs.djangoproject.com/en/2.2/topics/cache/#local-memory-caching) for using the internal cast. So there are two mocked redis instance for django.cache and get_redis_connection . If you want to use more redis commands, such as: sets, list..., you may need use [django_redis]((https://github.com/niwinz/django-redis)), and cast the result by hand. django.cache: ``` from django.core.cache import cache cache.set("key", 2) assert cache.get("key") == 2 ``` you have to cast by hand, when using fakeredis or django_redis directly, you have to cast by hand: ``` import fakeredis con = fakeredis.FakeStrictRedis() con.set("key", 2) assert con.get("key").decode('utf8') == "2" ``` 2. if you have a problem that mock is not worked, you may should to see [where to patch](https://docs.python.org/3/library/unittest.mock.html#where-to-patch) %package help Summary: Development documents and examples for django-fakeredis Provides: python3-django-fakeredis-doc %description help [![CircleCI](https://circleci.com/gh/o3o3o/django-fakeredis.svg?style=svg)](https://circleci.com/gh/o3o3o/django-fakeredis) Easier use [fakeredis](https://pypi.org/project/fakeredis) in Django. ### Install ``` pip install django-fakeredis ``` ## Why use it? I have experienced many times to find bugs which is caused by mutiple fakeredis instances in tests. We just want to use fakerredis like redis with one redis-server and different connections and can debug with MONITOR command in redis ### Features: * One fakeredis server with mutiple connections for tests like the way of using redis. * Combine override settings to Local-memory and fake [get_redis_connection](https://github.com/niwinz/django-redis), [django's cache](https://docs.djangoproject.com/en/2.2/topics/cache/) * To disable the fake action with passing env: "NOFAKE_REDIS=1" `NOFAKE_REDIS=1 python manage.py test` Before you use `django_fakeredis`, your tests code maybe like that: ```python server = fakeredis.FakeServer() @override_settings(CACHES={"default": {"BACKEND": "django.core.cache.backends.dummy.DummyCache" }}) @patch('foo.get_redis_connection', fakeredis.FakeRedis(server=server) def test_sth(): .... ``` Now your can just: ```python @FakeRedis("yourpath.get_redis_connection") def test_sth(): ... ``` ### Usage ```python from django_fakeredis import FakeRedis @FakeRedis("yourpath.get_redis_connection") def test_foo(): ... ``` ```python from django_fakeredis import FakeRedis with FakeRedis("yourpath.get_redis_connection"): foo() ``` ```python from django_fakeredis import FakeRedis with FakeRedis("yourpath.cache"): foo() ``` #### NOTE 1. If you want to mock `django.core.cache.cache` with fakeredis, django-fakeredis do nothing but just override CACHE settings into [Local-Memory](https://docs.djangoproject.com/en/2.2/topics/cache/#local-memory-caching) for using the internal cast. So there are two mocked redis instance for django.cache and get_redis_connection . If you want to use more redis commands, such as: sets, list..., you may need use [django_redis]((https://github.com/niwinz/django-redis)), and cast the result by hand. django.cache: ``` from django.core.cache import cache cache.set("key", 2) assert cache.get("key") == 2 ``` you have to cast by hand, when using fakeredis or django_redis directly, you have to cast by hand: ``` import fakeredis con = fakeredis.FakeStrictRedis() con.set("key", 2) assert con.get("key").decode('utf8') == "2" ``` 2. if you have a problem that mock is not worked, you may should to see [where to patch](https://docs.python.org/3/library/unittest.mock.html#where-to-patch) %prep %autosetup -n django-fakeredis-0.1.2 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-django-fakeredis -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Apr 11 2023 Python_Bot - 0.1.2-1 - Package Spec generated