.. image:: https://travis-ci.org/kitconcept/pytest-solr.svg?branch=master
:target: https://travis-ci.org/kitconcept/pytest-solr
.. image:: https://img.shields.io/pypi/v/pytest-solr.svg
:target: https://pypi.python.org/pypi/pytest-solr/
:alt: Latest Version
.. image:: https://img.shields.io/pypi/status/pytest-solr.svg
:target: https://pypi.python.org/pypi/pytest-solr/
:alt: Egg Status
.. image:: https://img.shields.io/pypi/l/pytest-solr.svg
:target: https://pypi.python.org/pypi/pytest-solr/
:alt: License
Solr process and client fixtures for py.test.
.. image:: https://raw.githubusercontent.com/kitconcept/pytest-solr/master/kitconcept.png
:alt: kitconcept
:target: https://kitconcept.com/
Introduction
pytest-solr is a pytest plugin for the Apache Solr search server.
It provides three pytest factories:
solr_process:
For starting and stopping the Solr server. This is session scoped.
solr_core:
For loading and unloading a Solr core configuration. This is module scoped.
solr:
For connecting to a Solr server during a test. This is function scoped.
Solr Process
^^^^^^^^^^^^
The solr_process factory starts and stops a the Solr process.
An existing Solr executable is required for this.
'executable':
path to the Solr executable. Default value is 'downloads/solr-<SOLR_VERSION>/bin/solr'
'host':
hostname where Solr runs. Default value is 'localhost'.
'port':
port Solr uses. Default is value is '18983'.
'core':
Solr core that is used. Default value is 'solr'.
'timeout':
timeout to wait for Solr to start. Default value is '60' (seconds).
Example::
from pytest_solr.factories import solr_process
solr_process = solr_process(
executable='solr-6.5.0/bin/solr',
host='localhost',
port=8983,
core='default',
version='6.5.0',
timeout=60
)
Solr Core
^^^^^^^^^
The solr_core factory adds and removes a Solr core configuration.
It expects two parameters, the Solr Process fixture name and the Solr core name.
'solr_process_fixture_name':
String with the name of the Solr Process. This is a required parameter.
'solr_core_name':
String with the name of the Solr core. Default value is 'default'.
Example::
from pytest_solr.factories import solr_core
my_solr_core = solr_core('solr_process', 'my_solr_core')
Solr
^^^^
The Solr factory connects to Solr via pysolr.
It expects a single parameter, the Solr core fixture name.
'solr_core_fixture_name':
String with the name of the Solr core. This is a required parameter.
Example::
-- coding: utf-8 --
from pytest_solr.factories import solr_core
from pytest_solr.factories import solr
minimal = solr_core('solr_process', 'minimal')
solr = solr('minimal')
def test_exact_term_match(solr):
solr.add([{'id': '1', 'title': 'bananas'}])
assert 1 == solr.search('title:bananas').hits
The solr fixture can then be injected into the test function and used to add documents to solr or search for terms.
See the pysolr documentation <https://github.com/django-haystack/pysolr>
_. for more details.
Installation
Install pytest-solr with pip::
$ pip install pytest-solr
Usage
Create a solr core with the name 'minimal' and inject the use the solr factory into a test function to use it::
# -*- coding: utf-8 -*-
from pytest_solr.factories import solr_core
from pytest_solr.factories import solr
minimal = solr_core('solr_process', 'minimal')
solr = solr('minimal')
def test_exact_term_match(solr):
solr.add([{'id': '1', 'title': 'bananas'}])
assert 1 == solr.search('title:bananas').hits
License
Copyright kitconcept GmbH.
Distributed under the terms of the MIT license, pytest-solr is free and Open Source software.
Contribute
Source code at Github <https://github.com/kitconcept/pytest-solr>
_Issue tracker at Github <https://github.com/kitconcept/pytest-solr/issues>
_
Support
If you are having issues, please let us know <https://github.com/kitconcept/pytest-solr/issues>
. If you require professional support feel free to contact us at info@kitconcept.com. <mailto:info@kitconcept.com>
1.0.0 (2020-05-11)
1.0a1 (2017-06-22)