我有以下代码对我为在主目录和每个子目录中的所有文件中匹配reg表达式而开发的代码执行单元测试。
我正在构建单元测试以确保它运行良好,但我对单元测试非常陌生。
我有以下代码:
class TestRegexMatches(unittest.TestCase):
def __init__(self,root_dir):
self.path = root_dir
def testEmptyRegex(self):
# Can't match negative look-ahead
key = re.compile('(?!)')
self.assertEqual(sum(tm.search_for_regex_match(self.path,key).values()),0)
def testIntersection(self):
key1 = re.compile('[abc]')
key2 = re.compile('[^abc]')
self.assertNotEqual(tm.search_for_regex_match(self.path,key1),
tm.search_for_regex_match(self.path,key2))
if __name__ == '__main__':
test_obj = TestRegexMatches('/home/luis/test')
unittest.main()
此代码目前无效。通常情况下,单元测试不会有 init 构造函数,但我希望能够为测试提供不同的目录以进行不同的测试,而不是在{{1}中对路径进行硬编码功能。
答案 0 :(得分:1)
有一个技巧可以解决你的需求(但不是一个好的单元测试实践):
class YourTest(unittest.TestCase):
PATH = 'home/luis/test'
def test_foo(self):
# do your thing with PATH
def test_bar(self):
# do your other thing with PATH
class YourOtherTest(YourTest):
PATH = 'home/luis/other-directory'
单元测试引擎将找到两个类TestCase
的子类,它将执行两个以test_
开头的每个方法。即test_foo
将在两个路径中执行,test_bar
也将执行。
单元测试不是基准测试,它们会检查代码单元是否为真或假。
你也可以不从TestCase继承,只是有一个包含两个方法的类,这两个方法被实例化并从你的main中显式运行。那么你就不会用你的基准内容来判断代码库中的测试用例。
编辑:测试根据实际文件搜索文件的代码没有任何问题。只是你在问题中提到了表现,这让我害怕:)