Как мне сделать прикрепленный скрипт pyunit python для поиска тестов во вложенных папках - PullRequest
0 голосов
/ 11 февраля 2011

Следующий скрипт python ищет и выполняет все тесты pyunit в текущей папке.


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

Как получить его, не ищите тестовые файлы в подпапках.

Может быть что-то вроде:

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)

1 Ответ

0 голосов
/ 11 февраля 2011

Изменение:

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

Кому:

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

А потом:

for root, dirs, files in os.walk(path):
    regressionTest(root)
...