วิธีทดสอบว่าไฟล์ csv ที่บันทึกไว้นั้นถูกต้องหรือไม่

ฉันมีฟังก์ชั่นเล็ก ๆ ที่ไม่ส่งคืนอะไรเลยนอกจากสร้างไฟล์ 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)

person maslak    schedule 02.02.2019    source แหล่งที่มา
comment
พิมพ์ก่อนบันทึก   -  person anky    schedule 02.02.2019
comment
ฉันไม่ต้องการพิมพ์มัน   -  person maslak    schedule 02.02.2019
comment
คุณกำลังส่งผ่านอะไรไปยังพารามิเตอร์ input และ output   -  person wwii    schedule 02.02.2019
comment
เส้นทางของไฟล์อินพุตและเอาต์พุต   -  person maslak    schedule 02.02.2019


คำตอบ (2)


.to_csv และ .read_csv รับบัฟเฟอร์เช่นเดียวกับเส้นทางสตริง เอกสารสำหรับวิธีการเหล่านั้น แนะนำให้ใช้ io.StringIO เป็นทางเลือกแทนไฟล์ที่เปิดหรือเส้นทางของไฟล์

ในการทดสอบหน่วย ให้ใช้อ็อบเจ็กต์ io.StringIO เพื่อให้ผ่าน สู่การทำงานระหว่างการทดสอบ บางอย่างเช่นนี้สำหรับการทดสอบฟังก์ชันอย่างง่าย

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)
person wwii    schedule 02.02.2019

ทดสอบเฟรมข้อมูลก่อนที่คุณจะคงไว้เป็นไฟล์ CSV สคริปต์ทดสอบ NumPy และ ฟังก์ชันการทดสอบ Pandas อาจมีประโยชน์ได้ หากคุณรู้สึกว่าจำเป็นต้องทดสอบไฟล์ CSV แสดงว่าคุณไม่ไว้วางใจฟังก์ชัน to_csv() ของ pandas จริงๆ แนวทางปฏิบัติที่ดีที่สุดคือตรวจสอบการทดสอบหน่วยของแพนด้า และ หากคุณรู้สึกว่าขาดไป ให้ขอแบบดึงเพื่อแก้ไขการทดสอบที่คุณรู้สึกว่าขาดหายไป

person André C. Andersen    schedule 02.02.2019