From 054efee522c04d03d83a2281191c8ed6228c9b3b Mon Sep 17 00:00:00 2001 From: Smasty <martin@smasty.net> Date: Wed, 3 Oct 2018 00:00:10 +0200 Subject: [PATCH] Code style for tests --- tests/conftest.py | 12 ++++-- tests/test_analyses.py | 79 +++++++++++++++++----------------- tests/test_catalog.py | 54 +++++++++++------------ tests/test_customers.py | 92 ++++++++++++++++++++-------------------- tests/test_exceptions.py | 57 +++++++++++++------------ tests/test_tracking.py | 47 ++++++++++---------- 6 files changed, 178 insertions(+), 163 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 9f34573..4338832 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,23 +1,27 @@ -from unittest.mock import MagicMock, Mock import pytest import json import os -# Helper method for getting JSONs from tests/data folder + @pytest.fixture() def load_data(): + """Helper method for getting JSONs from tests/data folder""" def load(file_name): with open(os.path.join('tests/data/', file_name)) as f: return json.load(f) + return load -# Helper method for returning mock responses via requests module + @pytest.fixture() def mock_request(): + """Helper method for returning mock responses via requests module""" def mock(data): class Response: def __init__(self, data): self.status_code = 200 self.text = json.dumps(data) + return lambda *args, **kwargs: Response(data) - return mock \ No newline at end of file + + return mock diff --git a/tests/test_analyses.py b/tests/test_analyses.py index 95173f7..cb82de9 100644 --- a/tests/test_analyses.py +++ b/tests/test_analyses.py @@ -1,52 +1,53 @@ from exponea_python_sdk.client import Exponea -from pytest_mock import mocker + def test_get_funnel(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_funnel.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) - funnel = exponea.analyses.get_funnel("test") - assert funnel["name"] == "test_funnel" - assert funnel["data"][0] == { - "serie": "Total", - "step 1 first_session count": 2, - "step 2 session_start count": 1, - "step 2 session_start duration from previous": 435764.1615576744 + exponea = Exponea('test') + mock_exponea_response = load_data('test_funnel.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) + funnel = exponea.analyses.get_funnel('test') + assert funnel['name'] == 'test_funnel' + assert funnel['data'][0] == { + 'serie': 'Total', + 'step 1 first_session count': 2, + 'step 2 session_start count': 1, + 'step 2 session_start duration from previous': 435764.1615576744 } - assert funnel["data"][1] == { - "serie": "Foo", - "step 1 first_session count": 1, - "step 2 session_start count": 1, - "step 2 session_start duration from previous": 435764.1615576744 + assert funnel['data'][1] == { + 'serie': 'Foo', + 'step 1 first_session count': 1, + 'step 2 session_start count': 1, + 'step 2 session_start duration from previous': 435764.1615576744 } + def test_get_report(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_report.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) - report = exponea.analyses.get_report("test") - assert report["name"] == "test_report" - assert report["data"][0] == { - "cookie id": "test1", - "count(customer)": 1 + exponea = Exponea('test') + mock_exponea_response = load_data('test_report.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) + report = exponea.analyses.get_report('test') + assert report['name'] == 'test_report' + assert report['data'][0] == { + 'cookie id': 'test1', + 'count(customer)': 1 } - assert report["data"][1] == { - "cookie id": "test2", - "count(customer)": 2 + assert report['data'][1] == { + 'cookie id': 'test2', + 'count(customer)': 2 } + def test_get_segmentation(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_segmentation.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) - segmentation = exponea.analyses.get_segmentation("test") - assert segmentation["name"] == "test_segmentation" - assert segmentation["data"][0] == { - "segment": "already_bought", - "#": 0 + exponea = Exponea('test') + mock_exponea_response = load_data('test_segmentation.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) + segmentation = exponea.analyses.get_segmentation('test') + assert segmentation['name'] == 'test_segmentation' + assert segmentation['data'][0] == { + 'segment': 'already_bought', + '#': 0 } - assert segmentation["data"][1] == { - "segment": "not_bought", - "#": 4 + assert segmentation['data'][1] == { + 'segment': 'not_bought', + '#': 4 } - diff --git a/tests/test_catalog.py b/tests/test_catalog.py index 372ba5e..5eeded7 100644 --- a/tests/test_catalog.py +++ b/tests/test_catalog.py @@ -1,36 +1,36 @@ from exponea_python_sdk.client import Exponea -from pytest_mock import mocker + def test_create_catalog(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_create_catalog.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) - catalog_id = exponea.catalog.create_catalog("test", ["field_one", "field_two"]) - assert catalog_id == "5bfawefds3a0015e7f0b5" + exponea = Exponea('test') + mock_exponea_response = load_data('test_create_catalog.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) + catalog_id = exponea.catalog.create_catalog('test', ['field_one', 'field_two']) + assert catalog_id == '5bfawefds3a0015e7f0b5' + def test_get_catalog_name(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_get_catalog_name.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) - catalog_name = exponea.catalog.get_catalog_name("catalog_id") - assert catalog_name == "test_catalog" + exponea = Exponea('test') + mock_exponea_response = load_data('test_get_catalog_name.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) + catalog_name = exponea.catalog.get_catalog_name('catalog_id') + assert catalog_name == 'test_catalog' + def test_get_catalog_items(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_catalog_items.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) - catalog = exponea.catalog.get_catalog_items("catalog_id") - assert catalog["matched"] == 1 - assert catalog["matched_limited"] == False - assert catalog["total"] == 1 - assert catalog["limit"] == 20 - assert catalog["skip"] == 0 - assert catalog["data"][0] == { - "item_id": "1", - "properties": { - "one": "foo", - "two": "bar" + exponea = Exponea('test') + mock_exponea_response = load_data('test_catalog_items.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) + catalog = exponea.catalog.get_catalog_items('catalog_id') + assert catalog['matched'] == 1 + assert catalog['matched_limited'] is False + assert catalog['total'] == 1 + assert catalog['limit'] == 20 + assert catalog['skip'] == 0 + assert catalog['data'][0] == { + 'item_id': '1', + 'properties': { + 'one': 'foo', + 'two': 'bar' } } - - diff --git a/tests/test_customers.py b/tests/test_customers.py index dfb63c6..6bba296 100644 --- a/tests/test_customers.py +++ b/tests/test_customers.py @@ -1,66 +1,68 @@ from exponea_python_sdk.client import Exponea -from pytest_mock import mocker + def test_get_customer(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_customer.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) - customer = exponea.customer.get_customer({ "registered": "test" }) - assert customer["properties"]["first_name"] == "Lukas" - assert customer["ids"]["registered"] == "test" - assert customer["events"][0] == { - "properties": { - "foo": "bar" - }, - "timestamp":1533495544.343536, - "type":"test" + exponea = Exponea('test') + mock_exponea_response = load_data('test_customer.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) + customer = exponea.customer.get_customer({'registered': 'test'}) + assert customer['properties']['first_name'] == 'Lukas' + assert customer['ids']['registered'] == 'test' + assert customer['events'][0] == { + 'properties': { + 'foo': 'bar' + }, + 'timestamp': 1533495544.343536, + 'type': 'test' } + def test_get_customer_consents(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_customer_consents.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) - consents = exponea.customer.get_customer_consents({ "registered": "test" }, [ "newsletter" ]) - assert consents["newsletter"] == False + exponea = Exponea('test') + mock_exponea_response = load_data('test_customer_consents.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) + consents = exponea.customer.get_customer_consents({'registered': 'test'}, ['newsletter']) + assert consents['newsletter'] is False def test_get_customer_attributes(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_customer_attributes.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) - customer = exponea.customer.get_customer_attributes({ "registered": "test" }, ids=["id"], segmentations=["segm"], aggregations=["aggr"], properties=["prop"]) - assert customer["properties"]["prop"] == "Lukas" - assert customer["ids"]["id"] == ["123"] - assert customer["aggregations"]["aggr"] == 0 - assert customer["segmentations"]["segm"] == "not_bought" + exponea = Exponea('test') + mock_exponea_response = load_data('test_customer_attributes.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) + customer = exponea.customer.get_customer_attributes({'registered': 'test'}, ids=['id'], segmentations=['segm'], + aggregations=['aggr'], properties=['prop']) + assert customer['properties']['prop'] == 'Lukas' + assert customer['ids']['id'] == ['123'] + assert customer['aggregations']['aggr'] == 0 + assert customer['segmentations']['segm'] == 'not_bought' + def test_get_customers(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_customers.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) + exponea = Exponea('test') + mock_exponea_response = load_data('test_customers.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) customers = exponea.customer.get_customers() assert customers[0] == { - "ids": { - "registered": "test", - "cookie": [ "cookie" ] + 'ids': { + 'registered': 'test', + 'cookie': ['cookie'] }, - "properties": { - "first_name": "Lukas", - "last_name": "Cerny" + 'properties': { + 'first_name': 'Lukas', + 'last_name': 'Cerny' } } + def test_get_events(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_events.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) - events = exponea.customer.get_events({ "registered": "test"}, [ "test" ]) + exponea = Exponea('test') + mock_exponea_response = load_data('test_events.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) + events = exponea.customer.get_events({'registered': 'test'}, ['test']) assert events[0] == { - "properties":{ - "test": "foo" + 'properties': { + 'test': 'foo' }, - "timestamp":1533495529.9268496, - "type":"test" + 'timestamp': 1533495529.9268496, + 'type': 'test' } - - diff --git a/tests/test_exceptions.py b/tests/test_exceptions.py index 8a9afc2..212c64f 100644 --- a/tests/test_exceptions.py +++ b/tests/test_exceptions.py @@ -1,50 +1,55 @@ import pytest + from exponea_python_sdk.client import Exponea from exponea_python_sdk.exceptions import APIException -from pytest_mock import mocker def test_access_key_not_found_exception(mocker, mock_request): - exponea = Exponea("test") + exponea = Exponea('test') response = { - "error": "access key not found", - "success": False + 'error': 'access key not found', + 'success': False } - mocker.patch("requests.request", mock_request(response)) + mocker.patch('requests.request', mock_request(response)) with pytest.raises(APIException) as exception: - exponea.analyses.get_report("test") - assert "access key not found" in str(exception.value) + exponea.analyses.get_report('test') + assert 'access key not found' in str(exception.value) + def test_not_authorized_exception(mocker, mock_request): - exponea = Exponea("test") + exponea = Exponea('test') response = { - "errors": ["not authorized to update specified customer properties"], - "success": False + 'errors': ['not authorized to update specified customer properties'], + 'success': False } - mocker.patch("requests.request", mock_request(response)) + mocker.patch('requests.request', mock_request(response)) with pytest.raises(APIException) as exception: - exponea.analyses.get_report("test") - assert "not authorized to update specified customer properties" in str(exception.value) + exponea.analyses.get_report('test') + assert 'not authorized to update specified customer properties' in str(exception.value) + def test_errors_global_exception(mocker, mock_request): - exponea = Exponea("test") + exponea = Exponea('test') response = { - "errors": {"_global": ["Customer does not exist"]}, - "success": False + 'errors': {'_global': ['Customer does not exist']}, + 'success': False } - mocker.patch("requests.request", mock_request(response)) + mocker.patch('requests.request', mock_request(response)) with pytest.raises(APIException) as exception: - exponea.customer.get_customer({"registered": "test"}) - assert "Customer does not exist" in str(exception.value) + exponea.customer.get_customer({'registered': 'test'}) + assert 'Customer does not exist' in str(exception.value) + def test_no_permission_to_retrieve_attribute(mocker, mock_request): - exponea = Exponea("test") + exponea = Exponea('test') response = { - 'results': [{'value': 'Lukas', 'success': True}, {'error': 'No permission', 'success': False}, {'value': 'not bought', 'success': True}], + 'results': [{'value': 'Lukas', 'success': True}, {'error': 'No permission', 'success': False}, + {'value': 'not bought', 'success': True}], 'success': True } - mocker.patch("requests.request", mock_request(response)) - attributes = exponea.customer.get_customer_attributes({"registered": "test"}, ids=["test"], properties=["name"], expressions=["test"]) - assert attributes["ids"]["test"] == None - assert attributes["properties"]["name"] == "Lukas" - assert attributes["expressions"]["test"] == "not bought" + mocker.patch('requests.request', mock_request(response)) + attributes = exponea.customer.get_customer_attributes({'registered': 'test'}, ids=['test'], properties=['name'], + expressions=['test']) + assert attributes['ids']['test'] is None + assert attributes['properties']['name'] == 'Lukas' + assert attributes['expressions']['test'] == 'not bought' diff --git a/tests/test_tracking.py b/tests/test_tracking.py index 1a8e4d6..3832b27 100644 --- a/tests/test_tracking.py +++ b/tests/test_tracking.py @@ -1,36 +1,39 @@ from exponea_python_sdk.client import Exponea -from pytest_mock import mocker + def test_get_system_time(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_system_time.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) + exponea = Exponea('test') + mock_exponea_response = load_data('test_system_time.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) time = exponea.tracking.get_system_time() assert time == 1533663283.8943756 + def test_update_customer_properties(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_tracking.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) - response = exponea.tracking.update_customer_properties({ "registered": "foo" }, { "foo": "bar" }) - assert response == True + exponea = Exponea('test') + mock_exponea_response = load_data('test_tracking.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) + response = exponea.tracking.update_customer_properties({'registered': 'foo'}, {'foo': 'bar'}) + assert response is True + def test_add_event(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_tracking.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) - response = exponea.tracking.add_event({ "registered": "foo" }, { "foo": "bar" }) - assert response == True + exponea = Exponea('test') + mock_exponea_response = load_data('test_tracking.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) + response = exponea.tracking.add_event({'registered': 'foo'}, {'foo': 'bar'}) + assert response is True + def test_batch_commands(mocker, load_data, mock_request): - exponea = Exponea("test") - mock_exponea_response = load_data("test_batch_command.json") - mocker.patch("requests.request", mock_request(mock_exponea_response)) + exponea = Exponea('test') + mock_exponea_response = load_data('test_batch_command.json') + mocker.patch('requests.request', mock_request(mock_exponea_response)) response = exponea.tracking.batch_commands([ - exponea.tracking.add_event({ "registered": "test" }, "test", batch=True), - exponea.tracking.update_customer_properties({ "registered": "test" }, { "first_name": "test" }, batch=True), + exponea.tracking.add_event({'registered': 'test'}, 'test', batch=True), + exponea.tracking.update_customer_properties({'registered': 'test'}, {'first_name': 'test'}, batch=True), exponea.tracking.get_system_time(batch=True) ]) - assert response[0] == True - assert response[1] == True - assert response[2] == 1533833360.2316685 \ No newline at end of file + assert response[0] is True + assert response[1] is True + assert response[2] == 1533833360.2316685