จะบอก py.test ให้ข้ามไดเรกทอรีบางอย่างได้อย่างไร?


91

ฉันพยายามใช้norecursedirsตัวเลือกใน setup.cfg เพื่อบอก py.test ว่าอย่ารวบรวมการทดสอบจากไดเรกทอรีบางอย่าง แต่ดูเหมือนว่ามันจะเพิกเฉย

[tool:pytest]
norecursedirs=lib/third

เมื่อฉันเรียกใช้py.testฉันเห็นว่ามันได้รับการทดสอบจากภายในlib/third!


ดูเหมือนว่าฉันpy.testและpytestทั้งสองคนทดสอบการวิ่งและเป็นสัตว์ร้ายที่แตกต่างกัน แปลก แต่เป็นหนึ่งล้มเหลวเพราะมันไม่ได้โหลดการยกเว้นจากpytest [pytest]
ซอริน

1
pytestมาจาก logilab py.testคุณต้องการ
ecatmur

3
ลองทำด้วยnosecuredirs=lib/third/*
intelis

มีวิธีละเว้นบางโฟลเดอร์ในสคริปต์ด้วยรหัสหรือไม่?
bicepjai

2
มาลงเอยที่นี่เพราะฉันอยากรู้ว่าทำไมเว็บแอปที่มีการพัฒนาในพื้นที่ของฉันจึงช้ามาก ... เหตุผลก็คือไดเร็กทอรีทรัพยากรที่อัปโหลดบางส่วนที่มีโครงสร้าง yy / dd / mm ซ้อนกัน .... ทำให้มันแย่มาก! ขอบคุณ[pytest] norecursedirs = resourcesในpytest.iniเคล็ดลับ! 💪
andilabs

คำตอบ:


86

py.test --ignore=somedir ทำงานให้ฉัน


5
และ--ignoreสามารถระบุได้หลายครั้งเพื่อละเว้นหลายไดเรกทอรี
ฟีนิกซ์

วิธีข้ามการทดสอบบางอย่างแทนไดเรกทอรี
Rajat jain

คุณสามารถใช้-kตัวเลือกนี้เป็นคำตอบอื่นที่แสดงด้านล่าง โปรดดูที่ "การทดสอบเรียกใช้โดยการแสดงออกทางคำว่า" ในdocs.pytest.org/en/latest/... เครื่องหมายอาจเป็นประโยชน์เช่นกัน ทำเครื่องหมายการทดสอบของคุณเป็น "ช้า" ฯลฯ และจากนั้นใช้-k "not slow"
shadfc

3
นอกจากนี้ยังเป็นไปได้ที่จะใช้--ignore-globเพื่อละเว้นเส้นทางไฟล์ทดสอบโดยใช้สัญลักษณ์ตัวแทนแบบเชลล์ของ Unix เช่น--ignore-glob=**/sandbox/*จะละเว้นไฟล์ทั้งหมดในsandboxโฟลเดอร์ใด ๆ
ม.ค.

28

หากคุณมีหลายไดเรกทอรีที่มีผู้ปกครองต่างกันคุณสามารถระบุ--ignoreพารามิเตอร์ต่างๆได้:

py.test --ignore=somedir --ignore=otherdir --ignore=etcdir

  • ตัวเลือกใหม่: --ignore จะป้องกันเส้นทางที่ระบุจากการรวบรวม
    สามารถระบุได้หลายครั้ง

24

ฉันจะแก้ไขปริศนา: ถ้าส่วน pytest พบในหนึ่งใน config ไฟล์ที่เป็นไปได้ ( pytest.ini, tox.iniและsetup.cfg) pytest จะไม่มองหาคนอื่น ๆ เพื่อให้แน่ใจว่าคุณกำหนดตัวเลือก py.test ในไฟล์เดียว

setup.cfgผมขอแนะนำให้ใช้


9
ทำไมsetup.cfg? เอกสารปัจจุบันดูเหมือนจะแนะนำอีกสอง
ฉบับ

ฉันคิดว่ามันเป็นสิ่งสำคัญที่ต้องพูดถึงว่าถ้าคุณต้องการที่จะใช้ไฟล์ที่คุณจำเป็นต้องระบุด้วย.ini pytest -c pytest.iniด้วยเหตุผลบางประการsetup.cfgเนื้อหาถูกหยิบขึ้นมาโดยอัตโนมัติ
therightstuff

17

คุณสามารถใช้ได้

py.test -k 'not third'

ที่ไม่รวมเนื้อหาไดเรกทอรี 'ที่สาม' ทั้งหมด


11

norecursedirsควรทำงาน. ตรวจสอบว่าคุณมีไฟล์ pytest.ini หรือไฟล์ setup.cfg อื่น ๆ หรือไม่ คุณเป็นpy.testอย่างไรบ้าง?


1
ฉันมีsetup.cfgกับสิ่งที่เหมาะสม[pytest]และ norecorsedirs อยู่ข้างใน แต่ดูเหมือนว่าจะถูกเพิกเฉยและจะค้นหาไฟล์ทั้งหมดแทน
sorin

10

ในกรณีของฉันปัญหาคือสัญลักษณ์แทนที่หายไป สิ่งต่อไปนี้ใช้ได้กับฉัน:

[tool:pytest]
norecursedirs = subpath/*

ในขณะที่norecursedirs = subpathไม่ได้


เหมือนกันที่นี่ แม้ว่าพฤติกรรมแปลก ๆ
azmeuk


0

กับการใช้งานpytest.ini(ซึ่งเป็นที่แนะนำถ้าคุณกำลังใช้toxซึ่งในกรณีนี้tox.iniจะทำให้ความรู้สึก) โทรด้วยpytestpytest -c pytest.ini

เพื่อป้องกันไม่ให้ตัวอย่างของฉันnot_me_1.pyและnot_me_2.pyจากการทดสอบหรือเป็นขุยของฉันpytest.iniมีดังนี้:

[pytest]
addopts = --ignore-glob=not_me_*

[pycodestyle]
ignore = not_me_* ALL

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.