การใช้งาน test markers

Python เบื้องต้นสำหรับการทดสอบโค้ด

Alexander Levin

Data Scientist

ภาพรวมของ test markers

  • กรณีที่ 1: ข้ามการทดสอบเมื่อเงื่อนไขเป็นจริง
  • กรณีที่ 2: การทดสอบนี้คาดว่าจะล้มเหลว

  • Test marker - แท็ก (marker) ของการทดสอบในไลบรารี pytest

  • ใช้กำหนดพฤติกรรมสำหรับการทดสอบแต่ละรายการโดยการติดแท็ก (marking)
Python เบื้องต้นสำหรับการทดสอบโค้ด

ไวยากรณ์ของ markers

  • Decorator - รูปแบบการออกแบบใน Python ที่ให้เพิ่มฟังก์ชันใหม่ให้กับออบเจกต์ที่มีอยู่โดยไม่ต้องแก้ไขโครงสร้าง
  • ไวยากรณ์ของ test markers เริ่มต้นด้วย decorator @pytest.mark:
import pytest

def get_length(string):
    return len(string)

# The test marker syntax
@pytest.mark.skip
def test_get_len():
    assert get_length('123') == 3
Python เบื้องต้นสำหรับการทดสอบโค้ด

markers: skip และ skipif

  • ใช้ @pytest.mark.skip - เมื่อต้องการข้ามการทดสอบในทุกกรณี
  • ใช้ @pytest.mark.skipif - เมื่อต้องการข้ามการทดสอบหากเงื่อนไขที่กำหนดเป็น True
Python เบื้องต้นสำหรับการทดสอบโค้ด

ตัวอย่าง skip marker

  • ใช้ @pytest.mark.skip - เมื่อต้องการข้ามการทดสอบอย่างถาวร
import pytest
def get_length(string):
    return len(string)

# The skip marker example
@pytest.mark.skip
def test_get_len():
    assert get_length('123') == 3
Python เบื้องต้นสำหรับการทดสอบโค้ด

ตัวอย่าง skip marker: ผลลัพธ์

  • ผลลัพธ์เมื่อมีการข้ามการทดสอบ:

ตัวอย่าง pytest.mark.skip

Python เบื้องต้นสำหรับการทดสอบโค้ด

ตัวอย่าง skipif marker

  • ใช้ @pytest.mark.skipif - เมื่อต้องการข้ามการทดสอบหากเงื่อนไขที่กำหนดเป็น True
import pytest
def get_length(string):
    return len(string)

# The skipif marker example
@pytest.mark.skipif('2 * 2 == 5')
def test_get_len():
    assert get_length('abc') == 3
Python เบื้องต้นสำหรับการทดสอบโค้ด

ตัวอย่าง skipif marker: ผลลัพธ์

  • ผลลัพธ์ของการทดสอบที่ถูกข้ามตามเงื่อนไข:

ตัวอย่าง pytest.mark.skipif

Python เบื้องต้นสำหรับการทดสอบโค้ด

Xfail marker

  • ใช้ @pytest.mark.xfail - เมื่อคาดว่าการทดสอบจะล้มเหลว
import pytest

def gen_sequence(n):
    return list(range(1, n+1))

# The xfail marker example
@pytest.mark.xfail
def test_gen_seq():
    assert gen_sequence(-1)
Python เบื้องต้นสำหรับการทดสอบโค้ด

Xfail marker: ผลลัพธ์

  • ผลลัพธ์ของการทดสอบที่คาดว่าจะล้มเหลว:

ตัวอย่าง pytest.mark.xfail

Python เบื้องต้นสำหรับการทดสอบโค้ด

สรุป

Test marker:

  • เป็น attribute ของการทดสอบในไลบรารี pytest
  • ใช้กำหนดพฤติกรรมสำหรับการทดสอบแต่ละรายการ
  • มีไวยากรณ์ที่เริ่มต้นด้วย @pytest.mark.name_of_the_marker
  • การใช้งานที่มีให้ใน pytest ทันที:
    • @pytest.mark.xfail
    • @pytest.mark.skip
    • @pytest.mark.skipif
Python เบื้องต้นสำหรับการทดสอบโค้ด

มาฝึกกันเถอะ!

Python เบื้องต้นสำหรับการทดสอบโค้ด

Preparing Video For Download...