代码之家  ›  专栏  ›  技术社区  ›  Evgeny

不存在文件的保证单元测试夹具

  •  0
  • Evgeny  · 技术社区  · 6 年前

    假设有人为 handle path 不存在:

    def handle(path):
       try:
          with open(path) as f:  
              pass
       except FileNotFoundError:
           raise FileNotFoundError(path)
    

    import pytest
    
    def test_handle_on_non_existent_path(): 
        x = "abc" # some unbelievable string
        with pytest.raises(FileNotFoundError):
            handle(x)        
    

    我的问题是,如何为单元测试生成不存在的路径。

    • 强制删除临时文件
    • 生成一个类似uuid的随机字符串?

    "abc" 是相当简洁的,但原则上确实不存在保证路径。

    更新:在 this question x "no_exist.txt"

    0 回复  |  直到 6 年前
        1
  •  1
  •   Dirk Herrmann    6 年前

    关于单元测试,似乎您的目的是测试代码的行为,以防 open(path) 会抛出一个 FileNotFoundError . 您的方法是让代码实际执行 open 调用,但使用不存在的路径名。这有一些缺点:正如您已经注意到的,对真实文件系统的依赖性带来了一个问题:如何为 path 文件系统上不存在可靠的文件。但是,还有一点,即,您甚至不确定文件系统不能存在另一个问题,例如一些与权限相关的问题,这可能会引发一些其他异常。 OSError ).

    打开 这本身就意味着你不能完全控制所发生的一切。因此,对于这个单元测试用例,一个更好的方法是模拟 让你的嘲笑提高 .

    推荐文章