testutils – Utils for Running Python Unittests

RunTests()

This function behaves as a custom TestLoader for python unittests.

With no system arguments, the default unittest TestRunner is used.

If the first system argument (sys.argv[1]) is set to ‘xml’, a XMLTestRunner is used, which produces a JUnit compatible XML output file. Within the current module, each function is identified which is a subclass of unittest.TestCase and for each TestCase, a test suite is executed, producing an individual output file for each TestCase. The output file has the name, ‘PYTEST-<TestCaseName>.xml’.

Example of a Python testcase:

import unittest

class TestRenumber(unittest.TestCase):

  def setUp(self):
    # prepare stuff"
    pass

  def testSomeFunction(self):
    # do some asserts
    pass

if __name__ == "__main__":
  from ost import testutils
  testutils.RunTests()
SetDefaultCompoundLib()

This function tries to ensure that a default compound library is set. When calling scripts with ost this is not needed, but since unit tests are called with python we need to ensure that it is set. The function is only expected to succeed (and return True) if COMPOUND_LIB was set when configuring the compilation.

It tries the following:

  • get it with ost.conop.GetDefaultLib()

  • look for compounds.chemlib in $OST_ROOT/share/openstructure

  • if OST_ROOT not set in the above, try to guess it based on the path of the conop module

To use this check modify the RunTests() call to read:

if __name__ == "__main__":
  from ost import testutils
  if testutils.SetDefaultCompoundLib():
    testutils.RunTests()
  else:
    print 'No compound library available. Ignoring test_XXX.py tests.'
Returns:

True, if a compound library was found and set to be accessed with ost.conop.GetDefaultLib(). False otherwise.