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

本文介绍如何使用Python的unittest模块对函数进行单元测试,特别是涉及文件操作的情况。通过修改函数以接受类似文件的对象,可以避免直接写入磁盘并在测试中使用StringIO或tempfile进行比较。此外,文章还提到了使用difflib进行差异比较和unittest的assertMultiLineEqual方法。
摘要由CSDN通过智能技术生成

我有一个python函数,它将输出文件写入磁盘。

我想使用python unit test模块为它编写一个单元测试。

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

是否有任何官方/推荐的方法?

我更喜欢让输出函数显式地接受文件句柄(或类似文件的对象),而不是接受文件名并自己打开文件。这样,我可以在单元测试中将一个StringIO对象传递给输出函数,然后将该StringIO对象(在.seek(0)调用之后)的内容返回到该StringIO对象,并与预期的输出进行比较。

例如,我们将像这样转换代码

##File:lamb.py

import sys

def write_lamb(outfile_path):

with open(outfile_path, 'w') as outfile:

outfile.write("Mary had a little lamb.

")

if __name__ == '__main__':

write_lamb(sys.argv[1])

##File test_lamb.py

import unittest

import tempfile

import lamb

class LambTests(unittest.TestCase):

def test_lamb_output(self):

outfile_path = tempfile.mkstemp()[1]

try:

lamb.write_lamb(outfile_path)

contents = open(tempfile_path).read()

finally:

# NOTE: To retain the tempfile if the test fails, remove

# the try-finally clauses

os.remove(outfile_path)

self.assertEqual(result,"Mary had a little lamb.

")

这样编码

##File:lamb.py

import sys

def write_lamb(outfile):

outfile.write("Mary had a little lamb.

")

if __name__ == '__main__':

with open(sys.argv[1], 'w') as outfile:

write_lamb(outfile)

##File test_lamb.py

import unittest

from

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值