จะทำให้ pytest ละเว้นคลาสชื่อ TestSomething ได้อย่างไร? [ซ้ำ]

Aug 16 2020

ฉันกำลังทำงานกับกรอบการทดสอบประเภทหนึ่งที่มีชื่อชั้นเรียนTestSomethingแน่นอน และฉันตระหนักว่าการทดสอบของฉันล้มเหลวเนื่องจาก pytest มองว่าคลาสเหล่านี้เป็น "สิ่งที่ฉันต้องการเพื่อสร้างอินสแตนซ์และเรียกใช้!" ทันทีที่นำเข้า และสิ่งนี้จะไม่ได้ผลอย่างแน่นอน

import pytest
from package import TestSomethingClass

เป็นไปได้ไหมที่จะนำเข้าคลาสดังกล่าวจากไฟล์ทดสอบ pytest โดยตรง หรือฉันควรใช้สิ่งเหล่านี้ทางอ้อมผ่านฟิกซ์เจอร์?

ปัญหาเดียวกันนี้ใช้กับข้อยกเว้นเพราะฉันต้องทำบางอย่างเช่น

with pytest.raises(TestsSomethingError):

คำตอบ

4 DavidJ Aug 16 2020 at 03:59

ปิดการใช้งานอย่างชัดเจน

คุณสามารถอนุญาตให้ pytest เพิกเฉยต่อคลาสเฉพาะนี้ได้โดยการเริ่มต้นด้วยคำTestโดยตั้งค่า__test__แฟล็กFalseภายในคลาสที่ขัดแย้งกันของคุณ

class TestSomethingClass(object):
    __test__ = False

    def test_class_something(self, object):
        pass

ลักษณะเฉพาะ: https://github.com/pytest-dev/pytest/pull/1561


ไฟล์กำหนดค่า

นอกจากนี้เรายังสามารถเปลี่ยนการประชุมอย่างสมบูรณ์ในของคุณไฟล์และไม่สนใจชื่อชั้นทั้งหมดซึ่งเริ่มต้นคำว่าpytest.ini Exampleแต่ฉันไม่แนะนำสิ่งนี้เนื่องจากเราอาจพบกับผลลัพธ์ที่ไม่ได้ตั้งใจบนท้องถนน

#pytest.ini file
[pytest]
python_classes = !Example

อนุสัญญา Pytest

  • ทดสอบฟังก์ชันหรือวิธีการทดสอบคำนำหน้านอกชั้นเรียน

  • ทดสอบฟังก์ชันหรือวิธีการทดสอบคำนำหน้าในคลาสทดสอบคำนำหน้าการทดสอบ (ไม่มีวิธีการเริ่มต้น )

ที่มา: https://docs.pytest.org/en/stable/customize.html