Skip to main content

Solr process and client fixtures for py.test.

Project description

https://travis-ci.org/kitconcept/pytest-solr.svg?branch=master

Solr process and client fixtures for py.test.

kitconcept

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. 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

Support

If you are having issues, please let us know. If you require professional support feel free to contact us at info@kitconcept.com.

1.0a1 (2017-06-22)

  • Initial release. [timo]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
pytest-solr-1.0a1.tar.gz (5.2 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page