How can i make the attached pyunit python script search for tests in subfolders

StackOverflow https://stackoverflow.com/questions/4970084

  •  12-11-2019
  •  | 
  •  

سؤال

The following python script searches and executes all pyunit tests in the current folder.

"""Regression testing framework

This module will search for scripts in the same directory named
XYZtest.py.  Each such script should be a test suite that tests a
module through PyUnit.  (As of Python 2.1, PyUnit is included in
the standard library as 'unittest'.)  This script will aggregate all
found test suites into one big test suite and run them all at once.
"""

import sys, os, re, unittest

def regressionTest():
    path = os.path.abspath(os.path.dirname(sys.argv[0]))
    files = os.listdir(path)
    print 'You are HERE! ' ,os.getcwd()
    test = re.compile( ".test\.py$", re.IGNORECASE)
    files = filter(test.search, files)
    filenameToModuleName = lambda f: os.path.splitext(f)[0]
    moduleNames = map(filenameToModuleName, files)
    modules = map(__import__, moduleNames)
    load = unittest.defaultTestLoader.loadTestsFromModule
    return unittest.TestSuite(map(load, modules))

if __name__ == "__main__":
    unittest.main(defaultTest="regressionTest")

How can i get it ot search for test files in subfolders.

Maybe something like:

import sys, os, re, unittest, fnmatch
    for root, dirs, files in os.walk(path):
        for filename in fnmatch.filter(files, pattern):
            print os.path.join(root, filename)
هل كانت مفيدة؟

المحلول

Change:

def regressionTest():
   path = os.path.abspath(os.path.dirname(sys.argv[0]))

To:

def regressionTest(somearg):
   path = os.path.abspath(os.path.dirname(somearg))

And then:

for root, dirs, files in os.walk(path):
    regressionTest(root)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top