ZSI-specific material to zsi/test/wsdlpy, removed dependencies on utils.py.main
| @@ -1,25 +1,23 @@ | |||
| Two top level modules have been provided to run the tests. "test_wstools.py" is used | |||
| to run all of the local tests. "test_wstools_net.py" is used to run all of the | |||
| tests that require network access. | |||
| Two top level modules have been provided to run the tests. "test_wstools.py" | |||
| is used to run all of the local tests. "test_wstools_net.py" is used to run | |||
| all of the tests that require network access. | |||
| TESTS: | |||
| test_t1 -- Basic test, just checks that wsdl and xsd objects are in the | |||
| right places. | |||
| Add the -v option for more informative feedback. | |||
| ADDING TESTS: | |||
| 1. For Stand-Alone tests add WSDL FILE to appropriate archive file | |||
| Need to add a NEW Archive?: | |||
| config.py [files] "archive" -- tuple of all archive files, | |||
| config.txt [files] "archive" -- tuple of all archive files, | |||
| if you need to create a new archive append the archive | |||
| name to the 'archive' tuple. | |||
| 2. Edit config.py section(s): | |||
| 2. Edit config.txt section(s): | |||
| option -- name by which service will be referenced in test case. | |||
| Need an entry under appropriate section(s), this name | |||
| must be unique within each section it appears but it may | |||
| appear in multiple sections. | |||
| config.py "test" sections: | |||
| config.txt "test" sections: | |||
| Stand-Alone -- add "option" under [services_by_file] | |||
| eg. amazon = exports/AmazonWebServices.wsdl | |||
| @@ -28,21 +26,7 @@ ADDING TESTS: | |||
| Broken -- add "option" under [broken] | |||
| 3. In test module(s) | |||
| a. Add test case: | |||
| #eg. test_t1.py | |||
| class AmazonTestCase(WSDLToolsTestCase): | |||
| def test(self): | |||
| self.option = 'amazon' | |||
| self.loadFromConfig(CONFIG) | |||
| b. Add class name of test case to CASES list. | |||
| CASES = [AirportTestCase, | |||
| AmazonTestCase, | |||
| .... etc | |||
| 4. Done | |||
| 3. Done | |||
| CONTENTS OF SAMPLE WSDL/XSD: | |||
| @@ -1,5 +1,5 @@ | |||
| #! /usr/bin/env python | |||
| """wsdl2python and wstools.WSDLTools.WSDLReader tests directory.""" | |||
| """wstools.WSDLTools.WSDLReader tests directory.""" | |||
| import utils | |||
| @@ -6,8 +6,10 @@ | |||
| ########################################################################### | |||
| import sys, unittest | |||
| import ConfigParser | |||
| from ZSI.wstools.Utility import DOM | |||
| import utils | |||
| from ZSI.wstools.WSDLTools import WSDLReader | |||
| from ZSI.wstools.TimeoutSocket import TimeoutError | |||
| class WSDLToolsTestCase(unittest.TestCase): | |||
| @@ -15,10 +17,7 @@ class WSDLToolsTestCase(unittest.TestCase): | |||
| unittest.TestCase.__init__(self, methodName) | |||
| def setUp(self): | |||
| global configLoader | |||
| # not thread safe | |||
| self.path = configLoader.nameGenerator.next() | |||
| self.path = nameGenerator.next() | |||
| print self.path | |||
| sys.stdout.flush() | |||
| @@ -45,9 +44,17 @@ class WSDLToolsTestCase(unittest.TestCase): | |||
| name = DOM.getAttr(cnode, key) | |||
| component[name] | |||
| def wsdlTestAll(self): | |||
| def test_all(self): | |||
| try: | |||
| self.wsdl = utils.setUpWsdl(self.path) | |||
| if self.path[:7] == 'http://': | |||
| self.wsdl = WSDLReader().loadFromURL(self.path) | |||
| else: | |||
| self.wsdl = WSDLReader().loadFromFile(self.path) | |||
| except TimeoutError: | |||
| print "connection timed out" | |||
| sys.stdout.flush() | |||
| return | |||
| except: | |||
| self.path = self.path + ": load failed, unable to start" | |||
| raise | |||
| @@ -120,25 +127,34 @@ class WSDLToolsTestCase(unittest.TestCase): | |||
| self.checkXSDCollection('simpleType', schema.types, node) | |||
| def makeTestSuite(section=None): | |||
| global configLoader | |||
| def setUpOptions(section): | |||
| cp = ConfigParser.ConfigParser() | |||
| cp.read('config.txt') | |||
| if not cp.sections(): | |||
| print 'fatal error: configuration file config.txt not present' | |||
| sys.exit(0) | |||
| if not cp.has_section(section): | |||
| print '%s section not present in configuration file, exiting' % section | |||
| sys.exit(0) | |||
| return cp, len(cp.options(section)) | |||
| def getOption(cp, section): | |||
| for name, value in cp.items(section): | |||
| yield value | |||
| def makeTestSuite(section='services_by_file'): | |||
| global nameGenerator | |||
| cp, numTests = setUpOptions(section) | |||
| nameGenerator = getOption(cp, section) | |||
| suite = unittest.TestSuite() | |||
| configLoader = utils.MatchTestLoader(False, "config.py", "WSDLToolsTestCase") | |||
| if not section: | |||
| found = configLoader.setSection(sys.argv) | |||
| if not found: | |||
| configLoader.setSection("services_by_http") | |||
| else: | |||
| configLoader.setSection(section) | |||
| configLoader.testMethodPrefix = "wsdlTest" | |||
| suite.addTest(configLoader.loadTestsFromConfig(WSDLToolsTestCase)) | |||
| for i in range(0, numTests): | |||
| suite.addTest(unittest.makeSuite(WSDLToolsTestCase, 'test_')) | |||
| return suite | |||
| def main(): | |||
| loader = utils.MatchTestLoader(False, None, "makeTestSuite") | |||
| unittest.main(defaultTest="makeTestSuite", testLoader=loader) | |||
| unittest.main(defaultTest="makeTestSuite") | |||
| if __name__ == "__main__" : main() | |||
| @@ -7,11 +7,10 @@ | |||
| import unittest, tarfile, os, ConfigParser | |||
| import test_wsdl | |||
| import utils | |||
| SECTION='files' | |||
| CONFIG_FILE = 'config.py' | |||
| CONFIG_FILE = 'config.txt' | |||
| def extractFiles(section, option): | |||
| config = ConfigParser.ConfigParser() | |||
| @@ -31,8 +30,7 @@ def makeTestSuite(): | |||
| def main(): | |||
| extractFiles(SECTION, 'archives') | |||
| loader = utils.MatchTestLoader(True, None, "makeTestSuite") | |||
| unittest.main(defaultTest="makeTestSuite", testLoader=loader) | |||
| unittest.main(defaultTest="makeTestSuite") | |||
| if __name__ == "__main__" : main() | |||
| @@ -6,16 +6,14 @@ | |||
| ########################################################################### | |||
| import unittest | |||
| import test_wsdl | |||
| import utils | |||
| def makeTestSuite(): | |||
| suite = unittest.TestSuite() | |||
| suite.addTest(test_wsdl.makeTestSuite(("no_schemas", "simpleTypes", "services_by_http"))) | |||
| suite.addTest(test_wsdl.makeTestSuite("services_by_http")) | |||
| return suite | |||
| def main(): | |||
| loader = utils.MatchTestLoader(True, None, "makeTestSuite") | |||
| unittest.main(defaultTest="makeTestSuite", testLoader=loader) | |||
| unittest.main(defaultTest="makeTestSuite") | |||
| if __name__ == "__main__" : main() | |||