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() | |||