我有一个小函数,该函数什么也不返回,而是创建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)
答案 0 :(得分:1)
.read_csv
和import 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 scripts和Pandas test functions会很有帮助。如果你觉得你需要测试的CSV文件本身,你实际上是不信任的大熊猫to_csv()
功能。最好的做法是review the unit tests of pandas,如果您觉得缺少,请提出拉动请求,以感觉不到的测试来对其进行修改。