Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีเขียน Unit Test สำหรับโค้ดที่ใช้ Matplotlib


ภาพรวม

สาธิตวิธีทดสอบ Unit Test สำหรับฟังก์ชันที่พลอตกราฟ y = x² โดยตรวจสอบข้อมูล X, Y ที่ได้จาก Plot object

ขั้นตอน

  1. สร้างฟังก์ชัน plot_sqr_curve(x) ที่พลอตและคืนค่า Plot object
  2. สร้าง Test Class 繼承 unittest.TestCase
  3. เขียนเมธอด test_curve_sqr_plot():
    • สร้างข้อมูล x และ y = x²
    • เรียก plot_sqr_curve(x) ได้ Plot object
    • ดึงข้อมูล X, Y จาก Plot ด้วย get_data()
    • ตรวจสอบด้วย assertTrue((y == y_data).all()) และ assertTrue((x == x_data).all())

ตัวอย่างโค้ด

import unittest
import numpy as np
from matplotlib import pyplot as plt

def plot_sqr_curve(x):
    """Plotting x points with y = x^2."""
    return plt.plot(x, np.square(x))

class TestSqrCurve(unittest.TestCase):
    def test_curve_sqr_plot(self):
        x = np.array([1, 3, 4])
        y = np.square(x)
        pt, = plot_sqr_curve(x)
        y_data = pt.get_data()[1]
        x_data = pt.get_data()[0]
        self.assertTrue((y == y_data).all())
        self.assertTrue((x == x_data).all())

if __name__ == '__main__':
    unittest.main()

ผลลัพธ์

Ran 1 test in 1.587s
OK

หมายเหตุ

  • ใช้ pt.get_data() ดึงข้อมูล (x, y) จาก Line2D object
  • เทสไม่ต้องแสดงกราฟจริง ทำงานได้ใน Headless environment