程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何使用python unittest对函数进行单元测试

发布于2019-08-24 14:43     阅读(251)     评论(0)     点赞(21)     收藏(2)


我有一个Python函数,可以将输出文件写入磁盘。

我想使用Python unittest模块为它编写单元测试。

我该如何断言文件的相等性?如果文件内容与预期的一个+差异列表不同,我想得到一个错误。如在unix diff命令的输出中那样。

有没有官方/推荐的方式呢?


解决方案


最简单的方法是编写输出文件,然后读取其内容,读取gold(预期)文件的内容,并将它们与简单的字符串相等进行比较。如果它们相同,请删除输出文件。如果它们不同,请提出断言。

这样,当测试完成后,每个失败的测试都将用输出文件表示,你可以使用第三方工具将它们与黄金文件区分开来(Beyond Compare非常适合这个)。

如果你真的想提供自己的diff输出,请记住Python stdlib有difflib模块。Python 3.1中新的unittest支持包括一个assertMultiLineEqual使用它来显示差异的方法,类似于:

    def assertMultiLineEqual(self, first, second, msg=None):
        """Assert that two multi-line strings are equal.

        If they aren't, show a nice diff.

        """
        self.assertTrue(isinstance(first, str),
                'First argument is not a string')
        self.assertTrue(isinstance(second, str),
                'Second argument is not a string')

        if first != second:
            message = ''.join(difflib.ndiff(first.splitlines(True),
                                                second.splitlines(True)))
            if msg:
                message += " : " + msg
            self.fail("Multi-line strings are unequal:\n" + message)


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/57063/6b94322881a7aee69aa6/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

21 0
收藏该文
已收藏

评论内容:(最多支持255个字符)