Reorganise tests into unit and functional categories.

Tox (and hence Travis) only runs unit tests
Functional tests can be run manually, with the default Python version
This commit is contained in:
sneakypete81 2013-06-29 12:43:41 +01:00
parent 9319f903ac
commit d3a4036817
15 changed files with 31 additions and 27 deletions

View file

@ -1,10 +1,9 @@
#!/bin/bash #!/bin/bash
# #
# Simple script to run all tests with multiple test servers # Simple script to run all functional tests with multiple test servers
# across all supported Python versions
# #
# Default test server running latest self-hosted site # Test server running latest self-hosted site
tput setaf 3 tput setaf 3
echo echo
@ -12,7 +11,7 @@ echo "Testing latest self-hosted site..."
tput sgr0 tput sgr0
export OPENPHOTO_TEST_CONFIG=test export OPENPHOTO_TEST_CONFIG=test
unset OPENPHOTO_TEST_SERVER_API unset OPENPHOTO_TEST_SERVER_API
tox $@ python -m unittest discover --catch tests/functional
# Test server running APIv1 OpenPhoto instance # Test server running APIv1 OpenPhoto instance
tput setaf 3 tput setaf 3
@ -21,7 +20,7 @@ echo "Testing APIv1 self-hosted site..."
tput sgr0 tput sgr0
export OPENPHOTO_TEST_CONFIG=test-apiv1 export OPENPHOTO_TEST_CONFIG=test-apiv1
export OPENPHOTO_TEST_SERVER_API=1 export OPENPHOTO_TEST_SERVER_API=1
tox $@ python -m unittest discover --catch tests/functional
# Test account on hosted trovebox.com site # Test account on hosted trovebox.com site
tput setaf 3 tput setaf 3
@ -30,5 +29,5 @@ echo "Testing latest hosted site..."
tput sgr0 tput sgr0
export OPENPHOTO_TEST_CONFIG=test-hosted export OPENPHOTO_TEST_CONFIG=test-hosted
unset OPENPHOTO_TEST_SERVER_API unset OPENPHOTO_TEST_SERVER_API
tox $@ python -m unittest discover --catch tests/functional

View file

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 910 B

After

Width:  |  Height:  |  Size: 910 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 635 B

After

Width:  |  Height:  |  Size: 635 B

Before After
Before After

View file

@ -1,4 +1,4 @@
from tests import test_albums, test_photos, test_tags from tests.functional import test_albums, test_photos, test_tags
class TestAlbumsV1(test_albums.TestAlbums): class TestAlbumsV1(test_albums.TestAlbums):
api_version = 1 api_version = 1

View file

@ -2,7 +2,7 @@ try:
import unittest2 as unittest import unittest2 as unittest
except ImportError: except ImportError:
import unittest import unittest
from tests import test_base, test_albums, test_photos, test_tags from tests.functional import test_base, test_albums, test_photos, test_tags
@unittest.skipIf(test_base.get_test_server_api() < 2, @unittest.skipIf(test_base.get_test_server_api() < 2,
"Don't test future API versions") "Don't test future API versions")

View file

@ -1,6 +1,6 @@
import tests.test_base from tests.functional import test_base
class TestAlbums(tests.test_base.TestBase): class TestAlbums(test_base.TestBase):
testcase_name = "album API" testcase_name = "album API"
def test_create_delete(self): def test_create_delete(self):

View file

@ -128,13 +128,13 @@ class TestBase(unittest.TestCase):
""" Upload three test photos """ """ Upload three test photos """
album = cls.client.album.create(cls.TEST_ALBUM) album = cls.client.album.create(cls.TEST_ALBUM)
photos = [ photos = [
cls.client.photo.upload("tests/test_photo1.jpg", cls.client.photo.upload("tests/data/test_photo1.jpg",
title=cls.TEST_TITLE, title=cls.TEST_TITLE,
albums=album.id), albums=album.id),
cls.client.photo.upload("tests/test_photo2.jpg", cls.client.photo.upload("tests/data/test_photo2.jpg",
title=cls.TEST_TITLE, title=cls.TEST_TITLE,
albums=album.id), albums=album.id),
cls.client.photo.upload("tests/test_photo3.jpg", cls.client.photo.upload("tests/data/test_photo3.jpg",
title=cls.TEST_TITLE, title=cls.TEST_TITLE,
albums=album.id), albums=album.id),
] ]

View file

@ -1,9 +1,9 @@
import logging import logging
import openphoto import openphoto
import tests.test_base from tests.functional import test_base
class TestFramework(tests.test_base.TestBase): class TestFramework(test_base.TestBase):
testcase_name = "framework" testcase_name = "framework"
def setUp(self): def setUp(self):
@ -27,7 +27,7 @@ class TestFramework(tests.test_base.TestBase):
""" """
For all API versions >0, we get a generic hello world message For all API versions >0, we get a generic hello world message
""" """
for api_version in range(1, tests.test_base.get_test_server_api() + 1): for api_version in range(1, test_base.get_test_server_api() + 1):
client = openphoto.OpenPhoto(config_file=self.config_file, client = openphoto.OpenPhoto(config_file=self.config_file,
api_version=api_version) api_version=api_version)
result = client.get("hello.json") result = client.get("hello.json")

View file

@ -1,9 +1,9 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import openphoto import openphoto
import tests.test_base from tests.functional import test_base
class TestPhotos(tests.test_base.TestBase): class TestPhotos(test_base.TestBase):
testcase_name = "photo API" testcase_name = "photo API"
def test_delete_upload(self): def test_delete_upload(self):
@ -19,11 +19,11 @@ class TestPhotos(tests.test_base.TestBase):
self.assertEqual(self.client.photos.list(), []) self.assertEqual(self.client.photos.list(), [])
# Re-upload the photos, one of them using Bas64 encoding # Re-upload the photos, one of them using Bas64 encoding
ret_val = self.client.photo.upload("tests/test_photo1.jpg", ret_val = self.client.photo.upload("tests/data/test_photo1.jpg",
title=self.TEST_TITLE) title=self.TEST_TITLE)
self.client.photo.upload("tests/test_photo2.jpg", self.client.photo.upload("tests/data/test_photo2.jpg",
title=self.TEST_TITLE) title=self.TEST_TITLE)
self.client.photo.upload_encoded("tests/test_photo3.jpg", self.client.photo.upload_encoded("tests/data/test_photo3.jpg",
title=self.TEST_TITLE) title=self.TEST_TITLE)
# Check there are now three photos with the correct titles # Check there are now three photos with the correct titles
@ -61,7 +61,7 @@ class TestPhotos(tests.test_base.TestBase):
""" Ensure that duplicate photos are rejected """ """ Ensure that duplicate photos are rejected """
# Attempt to upload a duplicate # Attempt to upload a duplicate
with self.assertRaises(openphoto.OpenPhotoDuplicateError): with self.assertRaises(openphoto.OpenPhotoDuplicateError):
self.client.photo.upload("tests/test_photo1.jpg", self.client.photo.upload("tests/data/test_photo1.jpg",
title=self.TEST_TITLE) title=self.TEST_TITLE)
# Check there are still three photos # Check there are still three photos

View file

@ -3,11 +3,11 @@ try:
except ImportError: except ImportError:
import unittest import unittest
import tests.test_base from tests.functional import test_base
@unittest.skipIf(tests.test_base.get_test_server_api() == 1, @unittest.skipIf(test_base.get_test_server_api() == 1,
"The tag API didn't work at v1 - see frontend issue #927") "The tag API didn't work at v1 - see frontend issue #927")
class TestTags(tests.test_base.TestBase): class TestTags(test_base.TestBase):
testcase_name = "tag API" testcase_name = "tag API"
def test_create_delete(self, tag_id="create_tag"): def test_create_delete(self, tag_id="create_tag"):

View file

@ -2,10 +2,15 @@
envlist = py26, py27, py33 envlist = py26, py27, py33
[testenv] [testenv]
commands = python -m unittest discover --catch commands = python -m unittest discover --catch tests/unit
deps =
mock
httpretty
[testenv:py26] [testenv:py26]
commands = unit2 discover --catch commands = unit2 discover --catch tests/unit
deps = deps =
mock
httpretty
unittest2 unittest2
discover discover