如何为不返回任何内容的main()函数编写测试

时间:2016-02-01 21:59:13

标签: python-2.7 unit-testing nose

我正在尝试测试main()中的代码但是我有点不确定如何去做,因为我没有传递任何参数甚至返回任何内容。出于示例的目的,我缩短了函数中的树语句..

有人能指出我如何测试下面的逻辑吗?此外,我做了谷歌,看看这个问题是否已经被问过,但我找不到,所以如果是道歉并不是要再问一次。

script.py

from . import settings


def main():
    if settings.PATHS:  # list containing full paths to a directory of files
        paths = settings.PATHS
        for path in paths:
            data = read_file(path)
            modified_data = do_something_with_the_data_collected(data)
            write_to_new_file(modified_data)
    else:
        logger.warning("There are no files in {}".format(settings.FILES_DIRECTORY))

if __name__ == '__main__':
    main()

测试/ file_tests.py

import unittest

from module.script import main


class FileManagerTests(unittest.TestCase):

    def test_main_func(self):
        main()  # ?? this is where I am stuck, should I just test 
                # that it logs correctly if certain data exists 
                # in settings file?

if __name__ == '__main__':
    unittest.main()

1 个答案:

答案 0 :(得分:0)

你的函数输入 - 但它们不是参数。例如,settings.PATHS显然是一个输入。您通过read_file等接收更多输入。此外,您还有输出,即传递给write_to_new_file的数据。您必须找到影响输入数据和观察输出数据的方法。

我建议您阅读一些关于测试双打(存根,模拟等)以及如何在单元测试中使用它们的内容。这将有助于您在测试时处理代码中的依赖项。

而且,如果您还要学习设计可测试性代码,那么您可以让您的生活更轻松。这可以帮助您改进设计以删除依赖关系或使其更易于处理。