2012-04-12 29 views
2

这是与尝试 - 除了-终于和上下文经理覆盖率提高

277: try: 
278: with open(r"c:\afile.txt", "w") as aFile: 
...:  pass # write data, other exceptions/errors can occur here that have to be handled by the caller 
329: except IOError as ex: 
...: print ex 
332: finally: 
333: if os.path.exists(r"c:\afile.txt"): 
334:  shutil.copy(r"c:\afile.txt", r"c:\dest.txt") 

我已经得到了覆盖除从线278线的所有路径,我在我的节目流333

  • 我得到了正常的快乐流。
  • 我存根__builtin__.open提高ioError在打开的调用与所述文件名

但我怎么从278到333这甚至可能吗?


其他信息: - 使用 coverage.py 3.4(我们不能升级到3.5)

回答

0

一个通常处理以下列方式

try: 
    with open(r"C:\file.txt", "w") as aFile: 
     a.File.write("!") 
    if os.path.exists(r"C:\file.txt"): 
     shutil.copy(r"C:\file.txt", r"C:\dest.txt") 
except IOError as ex: 
    print ex 
+0

是的我意识到这一点,但是如果出现任何问题,我仍然需要finally子句'even'。 (包括检查文件是否存在,终于在这里显示比在这里显示的更多,所以我无法解决这个问题。在'#write data'部分发生了一些事情,可能会引发错误,但需要在这个函数的调用者然后最后一部分仍然需要运行 – 2012-04-12 11:28:31

+0

我已经重写了这样的代码(有一些改动) – 2012-04-19 16:25:13

2

大安流动,这可能是因为这代表coverage.py中的错误。我从你的描述中假设你正在使用分支机构覆盖范围,并且coverage.py声称缺少278-333。如果你能把这个缩减到一个可重复的测试用例,我会为它创建一个票据。

+0

将在星期一尝试 – 2012-04-13 21:26:29

+0

我无法重现该问题,但我确实发现了其他奇怪的东西。[如果我运行这个脚本](http://codepad.org/0pURCZml)它似乎工作。第13行不报告任何缺少的分支。但79,85,91和97行报告部分缺失分支到两(81,87,93,99)然而,另一个问题仍然存在于我们的生产代码中(虽然对我们来说不是什么大问题) – 2012-04-16 13:37:35