【问题标题】:Using Unittest/PyTest/etc. to test a Python function that works with files使用 Unittest/PyTest/等。测试处理文件的 Python 函数
【发布时间】:2021-05-12 22:56:19
【问题描述】:

我有一个函数,它接收 .mp3 或 .m4a 文件的路径并返回一个字符串,其中包含使用 TinyTag 从文件中提取的信息(为简洁起见,删除了导入语句):

def create_search_term(path_to_song):
    tag = TinyTag.get(path_to_song)
    artist = tag.artist
    album = tag.album
    search_term = f"{album} {artist} Album Cover"
    return search_term

我已经手动测试过,它适用于我计算机上的真实 MP3 文件路径。但是,我正在尝试向该项目添加单元测试。为这样的功能编写单元测试是否有最佳实践?

一个示例用例将"/path/to/bruce/springsteen/born_to_run.mp3" 作为输入,"Born to Run Album Cover" 作为返回值。

【问题讨论】:

    标签: python function unit-testing


    【解决方案1】:

    修补TinyTag 以生成示例响应,然后针对该响应测试函数结果:

    from mock import patch
    
    def test_create_search_term():
        with patch("__main__.TinyTag") as mock_tinytag:
            mock_tinytag.get.return_value.artist = "Bruce Springsteen"
            mock_tinytag.get.return_value.album = "Born to Run"
            assert create_search_term("foo") == "Born to Run Bruce Springsteen Album Cover"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 1970-01-01
      相关资源
      最近更新 更多