ภาพรวม
สาธิตวิธีทดสอบ Unit Test สำหรับฟังก์ชันที่พลอตกราฟ y = x² โดยตรวจสอบข้อมูล X, Y ที่ได้จาก Plot object
ขั้นตอน
- สร้างฟังก์ชัน
plot_sqr_curve(x)ที่พลอตและคืนค่า Plot object - สร้าง Test Class 繼承
unittest.TestCase - เขียนเมธอด
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