Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

LAB : Một vài ví dụ về Unit Test

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • LAB : Một vài ví dụ về Unit Test



    Kiểm tra các phép tính

    Đầu tiên chúng ta sẽ tạo file test_calc.py, sau đó import thư viện unittest và file calc.py chứa các hàm như add, subtract, multiply, devide.
    Code:
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]import unittest[/COLOR][/FONT][/FONT]
    [FONT=Times New Roman][COLOR=black]import calc[/COLOR][/FONT]
    Khai báo class TestCalc và định nghĩa các chức năng, assertEqual là để kiểm tra hai số có bằng nhau hay không
    Code:
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]class TestCalc(unittest.TestCase):[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]def test_add(self):[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]self.assertEqual(calc.add(5,5),10)[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]self.assertEqual(calc.add(-1,1),0)[/COLOR][/FONT][/FONT]
    
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]def test_subtract(self):[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]self.assertEqual(calc.subtract(6,3),3)[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]self.assertEqual(calc.subtract(-1,1),-2)[/COLOR][/FONT][/FONT]
    
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]def test_multiply(self):[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]self.assertEqual(calc.multiply(3,3),9)[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]self.assertEqual(calc.multiply(-2,-3),6)[/COLOR][/FONT][/FONT]
    
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]def test_devide(self):[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]self.assertEqual(calc.devide(6,2),3)[/COLOR][/FONT][/FONT]
    [FONT=Times New Roman][COLOR=black]self.assertEqual(calc.devide(-1,-1),1)[/COLOR][/FONT]
    Cuối cùng là khai báo hàm main để chạy chương trình
    Code:
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]if __name__=='__main__':[/COLOR][/FONT][/FONT]
    [FONT=Times New Roman][COLOR=black]unittest.main()[/COLOR][/FONT]
    Tiếp theo chúng ta sẽ viết file calc.py
    Code:
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]def add(a,b):[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]return a+b[/COLOR][/FONT][/FONT]
    
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]def subtract(a,b):[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]return a-b[/COLOR][/FONT][/FONT]
    
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]def multiply(a,b):[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]return a*b[/COLOR][/FONT][/FONT]
    
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]def devide(a,b):[/COLOR][/FONT][/FONT]
    [FONT=Times New Roman][COLOR=black]return a/b[/COLOR][/FONT]
    Sau khi chạy chúng ta sẽ được kết quả như sau:



    Lấy tên nhà sản xuất, loại thiết bị và trả về tên đầy đủ của thiết bị

    Đầu tiên chúng ta sẽ tạo file test_device_name.py, import thư viện unittest và file device_name.py chứa hàm device _name
    Code:
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]from device_name import parse_device_name[/COLOR][/FONT][/FONT]
    [FONT=Times New Roman][COLOR=black]import unittest[/COLOR][/FONT]
    Khai báo class NamesTestCase
    Code:
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]class NamesTestCase(unittest.TestCase):[/COLOR][/FONT][/FONT]
    
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]def test_parse_device_name(self):[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]result = parse_device_name("Cisco","Router","2911")[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]self.assertEqual(result,"Cisco Router 2911")[/COLOR][/FONT][/FONT]
    
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]if __name__=="__main__":[/COLOR][/FONT][/FONT]
    [FONT=Times New Roman][COLOR=black]unittest.main()[/COLOR][/FONT]
    Sau đó chúng ta sẽ tạo file device_name.py
    Code:
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]def parse_device_name(vendor, device_type, platform):[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]full_name = vendor + ' '+device_type+' '+platform[/COLOR][/FONT][/FONT]
    [FONT=Times New Roman][COLOR=black]return full_name.title()[/COLOR][/FONT]
    Chạy file sẽ cho ra kết quả


    Nhưng nếu chúng ta gặp trường hợp tên thiết bị như “Cisco Router 2911 SEC” thì khi đó chạy test sẽ fail
    Chúng ta sẽ vào file test_device_name.py và sửa lại như sau
    Code:
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]def test_parse_device_name_(self):[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]result = parse_device_name("Cisco","Router","2911","Sec")[/COLOR][/FONT][/FONT]
    [FONT=Times New Roman][COLOR=black]self.assertEqual(result,"Cisco Router 2911 Sec")[/COLOR][/FONT]
    Tiếp theo vào file device_name.py và sửa lại thêm trường hợp tham số đầu vào spec=’’. Nếu spec được khai báo thì sẽ thêm spec vào full_name.
    Code:
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]def parse_device _name(vendor, device_type,platform, spec=''):[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]if spec !='':[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]full_name = vendor +' '+device_type+' '+platform+' '+spec[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]else:[/COLOR][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman][COLOR=black]full_name = vendor +' '+device_type+' '+platform[/COLOR][/FONT][/FONT]
    [FONT=Times New Roman][COLOR=black]return full_name.title()[/COLOR][/FONT]
    Cuối cùng chúng ta sẽ chạy lại file test_device_name.py và được kết quả cho thấy test pass.



    Thank you.
    Nguồn : VNPRO
Working...
X