conftest
สารละลาย
โซลูชันที่มีการบุกรุกน้อยที่สุดกำลังเพิ่มไฟล์ว่างที่ชื่อconftest.py
ในrepo/
ไดเรกทอรี:
$ touch repo/conftest.py
แค่นั้นแหละ. ไม่จำเป็นต้องเขียนรหัสที่กำหนดเองสำหรับการจัดการsys.path
หรืออย่าลืมลากPYTHONPATH
หรือวาง__init__.py
ลงใน dirs ที่มันไม่ได้อยู่
ไดเรกทอรีโครงการหลังจากนั้น:
repo
├── conftest.py
├── app.py
├── settings.py
├── models.py
└── tests
└── test_app.py
คำอธิบาย
pytest
ค้นหาconftest
โมดูลบนคอลเลกชันทดสอบเพื่อรวบรวม hooks และส่วนควบแบบกำหนดเองและเพื่อนำเข้าวัตถุที่กำหนดเองจากพวกเขาpytest
เพิ่มไดเรกทอรีหลักของconftest.py
ไปยังsys.path
(ในกรณีนี้repo
ไดเรกทอรี)
โครงสร้างโครงการอื่น ๆ
ถ้าคุณมีโครงสร้างโครงการอื่น ๆ วางconftest.py
ใน dir รากแพคเกจ (หนึ่งที่มีแพคเกจ แต่ไม่ได้เป็นแพคเกจของตัวเองจึงไม่ได้ประกอบด้วย__init__.py
) ตัวอย่างเช่น:
repo
├── conftest.py
├── spam
│ ├── __init__.py
│ ├── bacon.py
│ └── egg.py
├── eggs
│ ├── __init__.py
│ └── sausage.py
└── tests
├── test_bacon.py
└── test_egg.py
src
แบบ
แม้ว่าวิธีนี้สามารถใช้กับsrc
เค้าโครง (วางconftest.py
ในsrc
dir):
repo
├── src
│ ├── conftest.py
│ ├── spam
│ │ ├── __init__.py
│ │ ├── bacon.py
│ │ └── egg.py
│ └── eggs
│ ├── __init__.py
│ └── sausage.py
└── tests
├── test_bacon.py
└── test_egg.py
ระวังว่าการเพิ่มsrc
เพื่อPYTHONPATH
ลดความหมายและประโยชน์ของsrc
เค้าโครง! คุณจะจบลงด้วยการทดสอบรหัสจากพื้นที่เก็บข้อมูลและไม่ใช่แพ็คเกจที่ติดตั้ง หากคุณต้องการทำสิ่งนั้นคุณอาจไม่ต้องการรหัสผ่านsrc
เลย
จะไปจากที่นี่
แน่นอนconftest
โมดูลไม่ใช่แค่ไฟล์บางไฟล์ที่จะช่วยให้ค้นพบซอร์สโค้ด นี่คือสิ่งที่การปรับปรุงpytest
โครงงานเฉพาะและการปรับแต่งชุดทดสอบของคุณทั้งหมดเกิดขึ้น pytest
มีจำนวนมากของข้อมูลเกี่ยวกับconftest
โมดูลกระจายอยู่ทั่วทั้งเอกสารของพวกเขา ; เริ่มต้นด้วยconftest.py
: ปลั๊กอินสำหรับแต่ละไดเรกทอรีในเครื่อง
นอกจากนี้ SO ยังมีคำถามที่ยอดเยี่ยมเกี่ยวกับconftest
โมดูล: ใน py.test การใช้ไฟล์ conftest.py คืออะไร