修补os.path.isfile文件副作用在列表理解中不起作用

2024-06-01 00:59:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python类中练习以下方法:

def find_tests(self):
    tests_dir = glob.glob("tests/*")
    if not tests_dir:
        return None

    # Filter out only the files in tests/ then get the test names.
    tests = [os.path.basename(t) for t in tests_dir if os.path.isfile(t)]

进行以下测试:

^{pr2}$

mock\isfile得到运行(用mock_isfile.call_count验证),但是,对于第三个列表元素,它不返回False,而是让所有元素都通过它来执行,最后得到以下结果:

======================================================================
FAIL: test_conductor_find_tests (test.test_juju_test.JujuTestPluginTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/mock.py", line 1201, in patched
    return func(*args, **keywargs)
  File "/home/marco/Projects/juju-plugins/test/test_juju_test.py", line 51, in test_conductor_find_tests
    self.assertEqual(results, test_names)
AssertionError: Lists differ: ['00-test', '01-ubuntu', '02-j... != ['00-test', '01-ubuntu', '02-j...

First list contains 1 additional elements.
First extra element 3:
lib

- ['00-test', '01-ubuntu', '02-juju', 'lib']
?                                   -------

+ ['00-test', '01-ubuntu', '02-juju']

----------------------------------------------------------------------

我需要做些什么才能得到os.path.isfile文件修补程序以尊重这些返回值?在


Tags: pathintestselfifosubuntulib