comparison test/test_mysql.py @ 5036:380d8d8b30a3

Replace existing run_tests.py script with a pytest script The existing run_test.py script is quite old, a bit restrictive, and doesn't always behave as documented. The pytest testing tool is mature, well documented, and maintained. The run_tests.py script is generating by installing py.test and running: py.tests --genscript=run_tests.py Note: to generate a script that is compatible with python2.6 the command needs to be run using python2.6
author John Kristensen <john@jerrykan.com>
date Thu, 20 Aug 2015 18:15:23 +1000
parents 63c79c0992ae
children 364c54991861
comparison
equal deleted inserted replaced
5035:b5bb492e4b3c 5036:380d8d8b30a3
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, 15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
17 17
18 import unittest, os, shutil, time, imp 18 import unittest, os, shutil, time, imp
19 19
20 import pytest
20 from roundup.hyperdb import DatabaseError 21 from roundup.hyperdb import DatabaseError
21 from roundup.backends import get_backend, have_backend 22 from roundup.backends import get_backend, have_backend
22 23
23 from db_test_base import DBTest, ROTest, config, SchemaTest, ClassicInitTest 24 from db_test_base import DBTest, ROTest, config, SchemaTest, ClassicInitTest
24 from db_test_base import ConcurrentDBTest, HTMLItemTest, FilterCacheTest 25 from db_test_base import ConcurrentDBTest, HTMLItemTest, FilterCacheTest
37 38
38 def nuke_database(self): 39 def nuke_database(self):
39 self.module.db_nuke(config) 40 self.module.db_nuke(config)
40 41
41 42
43 if not have_backend('mysql'):
44 SKIP_MYSQL = True
45 SKIP_MYSQL_REASON = 'Skipping MySQL tests: not enabled'
46 else:
47 try:
48 import MySQLdb
49 mysqlOpener.module.db_exists(config)
50 SKIP_MYSQL = False
51 SKIP_MYSQL_REASON = ''
52 except (MySQLdb.MySQLError, DatabaseError) as msg:
53 SKIP_MYSQL = True
54 SKIP_MYSQL_REASON = 'Skipping MySQL tests: %s' % str(msg)
55
56 skip_mysql = pytest.mark.skipif(SKIP_MYSQL, reason=SKIP_MYSQL_REASON)
57
58
59 @skip_mysql
42 class mysqlDBTest(mysqlOpener, DBTest, unittest.TestCase): 60 class mysqlDBTest(mysqlOpener, DBTest, unittest.TestCase):
43 def setUp(self): 61 def setUp(self):
44 mysqlOpener.setUp(self) 62 mysqlOpener.setUp(self)
45 DBTest.setUp(self) 63 DBTest.setUp(self)
46 64
47 65
66 @skip_mysql
48 class mysqlROTest(mysqlOpener, ROTest, unittest.TestCase): 67 class mysqlROTest(mysqlOpener, ROTest, unittest.TestCase):
49 def setUp(self): 68 def setUp(self):
50 mysqlOpener.setUp(self) 69 mysqlOpener.setUp(self)
51 ROTest.setUp(self) 70 ROTest.setUp(self)
52 71
53 72
73 @skip_mysql
54 class mysqlSchemaTest(mysqlOpener, SchemaTest, unittest.TestCase): 74 class mysqlSchemaTest(mysqlOpener, SchemaTest, unittest.TestCase):
55 def setUp(self): 75 def setUp(self):
56 mysqlOpener.setUp(self) 76 mysqlOpener.setUp(self)
57 SchemaTest.setUp(self) 77 SchemaTest.setUp(self)
58 78
59 79
80 @skip_mysql
60 class mysqlClassicInitTest(mysqlOpener, ClassicInitTest, unittest.TestCase): 81 class mysqlClassicInitTest(mysqlOpener, ClassicInitTest, unittest.TestCase):
61 backend = 'mysql' 82 backend = 'mysql'
62 def setUp(self): 83 def setUp(self):
63 mysqlOpener.setUp(self) 84 mysqlOpener.setUp(self)
64 ClassicInitTest.setUp(self) 85 ClassicInitTest.setUp(self)
65 def tearDown(self): 86 def tearDown(self):
66 ClassicInitTest.tearDown(self) 87 ClassicInitTest.tearDown(self)
67 self.nuke_database() 88 self.nuke_database()
68 89
69 90
91 @skip_mysql
70 class mysqlConcurrencyTest(mysqlOpener, ConcurrentDBTest, unittest.TestCase): 92 class mysqlConcurrencyTest(mysqlOpener, ConcurrentDBTest, unittest.TestCase):
71 backend = 'mysql' 93 backend = 'mysql'
72 def setUp(self): 94 def setUp(self):
73 mysqlOpener.setUp(self) 95 mysqlOpener.setUp(self)
74 ConcurrentDBTest.setUp(self) 96 ConcurrentDBTest.setUp(self)
75 def tearDown(self): 97 def tearDown(self):
76 ConcurrentDBTest.tearDown(self) 98 ConcurrentDBTest.tearDown(self)
77 self.nuke_database() 99 self.nuke_database()
78 100
79 101
102 @skip_mysql
80 class mysqlHTMLItemTest(mysqlOpener, HTMLItemTest, unittest.TestCase): 103 class mysqlHTMLItemTest(mysqlOpener, HTMLItemTest, unittest.TestCase):
81 backend = 'mysql' 104 backend = 'mysql'
82 def setUp(self): 105 def setUp(self):
83 mysqlOpener.setUp(self) 106 mysqlOpener.setUp(self)
84 HTMLItemTest.setUp(self) 107 HTMLItemTest.setUp(self)
85 def tearDown(self): 108 def tearDown(self):
86 HTMLItemTest.tearDown(self) 109 HTMLItemTest.tearDown(self)
87 self.nuke_database() 110 self.nuke_database()
88 111
89 112
113 @skip_mysql
90 class mysqlFilterCacheTest(mysqlOpener, FilterCacheTest, unittest.TestCase): 114 class mysqlFilterCacheTest(mysqlOpener, FilterCacheTest, unittest.TestCase):
91 backend = 'mysql' 115 backend = 'mysql'
92 def setUp(self): 116 def setUp(self):
93 mysqlOpener.setUp(self) 117 mysqlOpener.setUp(self)
94 FilterCacheTest.setUp(self) 118 FilterCacheTest.setUp(self)
96 FilterCacheTest.tearDown(self) 120 FilterCacheTest.tearDown(self)
97 self.nuke_database() 121 self.nuke_database()
98 122
99 123
100 from session_common import RDBMSTest 124 from session_common import RDBMSTest
125 @skip_mysql
101 class mysqlSessionTest(mysqlOpener, RDBMSTest, unittest.TestCase): 126 class mysqlSessionTest(mysqlOpener, RDBMSTest, unittest.TestCase):
102 def setUp(self): 127 def setUp(self):
103 mysqlOpener.setUp(self) 128 mysqlOpener.setUp(self)
104 RDBMSTest.setUp(self) 129 RDBMSTest.setUp(self)
105 def tearDown(self): 130 def tearDown(self):

Roundup Issue Tracker: http://roundup-tracker.org/