
Unit test phần logic thuần Python bằng unittest — chạy ngoài NX, không cần giấy phép
#Python#Kiểm thử1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Các hàm toán hình học, định dạng tên file, tăng revision không cần NX để chạy. Tách chúng thành module thuần rồi kiểm thử bằng unittest ngay trên máy phát triển, nhanh và miễn phí.
Unit test phần logic thuần Python bằng…Các bước thực hiện
- Tách hàm thuần. Không import NXOpen trong module này.
- Viết test. Mỗi hàm vài trường hợp thường, biên, lỗi.
- Chạy test. python -m unittest discover tests.
- Chạy trước mỗi phát hành. Có thể gắn vào Git hook.
- Thêm test khi sửa lỗi. Mỗi lỗi đã gặp trở thành một test.
Code tham khảo (Python)
# --- lib/hinh_hoc.py : không import NXOpen --- import math def goc_giua_hai_vecto(a, b): """Góc (độ) giữa hai vectơ 3 chiều dạng tuple.""" dai_a = math.sqrt(sum(x * x for x in a)) dai_b = math.sqrt(sum(x * x for x in b)) if dai_a == 0 or dai_b == 0: raise ValueError("Vectơ có độ dài 0") c = sum(x * y for x, y in zip(a, b)) / (dai_a * dai_b) return math.degrees(math.acos(max(-1.0, min(1.0, c)))) def tang_rev(rev): rev = (rev or "").strip().upper() if not rev: return "A" chu, i = list(rev), len(rev) - 1 while i >= 0: if chu[i] != "Z": chu[i] = chr(ord(chu[i]) + 1) return "".join(chu) chu[i] = "A" i -= 1 return "A" + "".join(chu) # --- tests/test_hinh_hoc.py --- import unittest class TestHinhHoc(unittest.TestCase): def test_goc_vuong(self): self.assertAlmostEqual(goc_giua_hai_vecto((1, 0, 0), (0, 1, 0)), 90.0, places=6) def test_goc_cung_huong(self): self.assertAlmostEqual(goc_giua_hai_vecto((2, 0, 0), (5, 0, 0)), 0.0, places=6) def test_vecto_khong(self): with self.assertRaises(ValueError): goc_giua_hai_vecto((0, 0, 0), (1, 0, 0)) def test_tang_rev(self): self.assertEqual(tang_rev(""), "A") self.assertEqual(tang_rev("A"), "B") self.assertEqual(tang_rev("Z"), "AA") self.assertEqual(tang_rev("AZ"), "BA") if __name__ == "__main__": unittest.main()Giải thích code
assertAlmostEqualso sánh số thực có sai số; đừng dùngassertEqualvới số thực.- Test bắt ngoại lệ bằng
assertRaisesbảo đảm hàm báo lỗi đúng kiểu khi đầu vào sai. - Hai phần trong cùng khối chỉ để minh họa; khi dùng thật hãy tách thành hai file.
Lỗi thường gặp
- Module có
import NXOpenở đầu file không import được ngoài NX; để các import đó vào bên trong hàm hoặc tách module. - Test chỉ chứng minh logic thuần đúng, không thay cho test trong NX với dữ liệu thật.
Code mang tính tham khảo, viết cho NX 12 trở lên (Python journal). Tên menu và một số lớp có thể khác theo phiên bản NX; hãy chạy thử trên bản sao của chi tiết trước khi dùng cho dữ liệu thật.
Điểm: 0
Trả lời
Đăng nhập để tham gia thảo luận.