如何测试保存的csv文件是否正确

时间:2019-02-02 16:49:41

标签: python pandas unit-testing mocking

我有一个小函数,该函数什么也不返回,而是创建csv文件。 如果给定的输出csv文件包含正确的数据,我想对其进行单元测试。 我该如何实现?

功能

def create_csv(input, output)
    df = pd.read_csv(input, names=['number1', 'number2'])
    df.number1 *= 2
    df.number2 *= 5
    df.to_csv(output, index=False, header=False)

2 个答案:

答案 0 :(得分:1)

.read_csvimport unittest, io class TestOne(unittest.TestCase): def setUp(self): s = '''3,4\n2,1\n5,6''' self.fakecsv = io.StringIO(s) self.fakefile = io.StringIO() self.result = '''6,20\n4,5\n10,30\n''' def test_create(self): create_csv(self.fakecsv, self.fakefile) self.fakefile.seek(0) self.assertEqual(self.fakefile.read(), self.result) 采用缓冲区以及字符串路径。 The docs for those methods建议使用io.StringIO替代打开的文件或文件路径。

在单元测试中,使用io.StringIO对象在测试过程中传递给该函数。像这样的功能的简单测试

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<gradient
        android:angle="180"
        android:startColor="@color/StartColor"
        android:endColor="@color/EndColor"
        android:type="linear" />

<corners
        android:radius="0dp"/>

答案 1 :(得分:1)

在将数据帧持久保存到CSV文件之前,对其进行测试。该NumPy test scriptsPandas test functions会很有帮助。如果你觉得你需要测试的CSV文件本身,你实际上是不信任的大熊猫to_csv()功能。最好的做法是review the unit tests of pandas,如果您觉得缺少,请提出拉动请求,以感觉不到的测试来对其进行修改。