我正在尝试测试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()
答案 0 :(得分:0)
你的函数有输入 - 但它们不是参数。例如,settings.PATHS显然是一个输入。您通过read_file等接收更多输入。此外,您还有输出,即传递给write_to_new_file的数据。您必须找到影响输入数据和观察输出数据的方法。
我建议您阅读一些关于测试双打(存根,模拟等)以及如何在单元测试中使用它们的内容。这将有助于您在测试时处理代码中的依赖项。
而且,如果您还要学习设计可测试性代码,那么您可以让您的生活更轻松。这可以帮助您改进设计以删除依赖关系或使其更易于处理。