ทดสอบการประมวลผลจะหยุดหลังจากที่ assertion เกิดข้อผิดพลาดใน pytest

0

คำถาม

สำหรับข้อมูลถูกผลักดันการทดสอบถ้ามันมี 10 ตั้งค่าข้อมูลและ assertion ล้มเหลวสำหรับ 3 รูปแบบแถบกำกับแกน y แล้วที่เหลือของ 7 ข้อมูลจะไม่ถูกพิจารณาสำหรับการประมวลผลและโปรแกรมจะได้หยุดตรงจุดนั้นเลย ฉันพยายามโดย removeing น"เลี้ยงส่งอีเมล์"และช่วงเวลานั้นข้อมูลทั้งหมดตั้งค่าเป็นพิจารณาสำหรับการประมวลผลแต่ตอนจบสถานะเป็นการแสดงที่ผ่านซึ่งมันไม่ถูกต้องที่ฉันต้องการที่จะรายงานความล้มเหลวรับที่ 3 ข้อมูลเรียบร้อย ได้โปรดให้ผมรู้ถ้าหากคุณมีทางแก้ปัญหานั่นสำหรับเหมือนกัน

ฉันพยายามต่อไปนี้ 2 วิธีการของ,และมันไม่ได้เรื่องเลย สำหรับคนแรกหนึ่งทดสอบคดีประหาร 10 ครั้งสำหรับ 10 datasets แต่หลังจากความล้มเหลวสำหรับ 3 วันที่,การทดสอบการประมวลผลสถานะเป็นการแสดงที่ผ่านซึ่งมันไม่ถูกต้องเป็นการทดสอบคดีควรจะล้มเหลวในรายงาน

สำหรับครั้งที่สองแล้วในหนึ่ง,การทดสอบการประมวลผลจะหยุดเลยหลังจาก assertion ความล้มเหลวใน 3 วันที่และภาพที่เหลือตั้งค่าข้อมูลจะไม่ถูกพิจารณาสำหรับการประมวลผล.

เป้าหมายของฉันคือที่จะประมวลผลการทดสอบคดีสำหรับข้อมูลทั้งหมดตั้งค่าที่ครั้งนึงแล้วตรวจดูรายงานสำหรับข้อความล้มเหลว

        try:
            assert len(json_response_plan) == 1
        except Exception:
            pytest.raises(Exception)


        try:
            assert len(json_response_plan) == 1
        except Exception as e:
            raise e
automated-tests pytest python
2021-11-24 05:12:42
1

คำตอบที่ดีที่สุด

1

pytest จะหยุดการประมวลผลแรกล้มเหลว เพื่อให้ทดสอบฟังก์ชัน. หมายความว่า,ถ้านายมี 10 คดีแต่ส่งพวกเขาเพื่อเป็นการทดสอบเดี่ยวฟังก์ชัน(อยู่ในสำหรับเล่นวนซ้ำสำหรับ eg)มันจะหยุดแรกความล้มเหลว(i.e. กระโดดต่อทดสอบฟังก์ชันหรือทางออกถ้าไม่มีอีกทดสอบฟังก์ชัน). เพื่อแก้ไขเรื่องนี้มาตรฐานทางคือต้องทำให้แน่ใจว่าทุก 10 คดีเลือย่างที่แยกออกทดสอบคดี นี่คือที่ที่ parametrized fixtures เข้ามาในรูป

คิดซะว่านี่เป็นตัวอย่าง:

def my_dataset():
    return range(5)  # return your datasets from here

@pytest.fixture(params=my_dataset())
def my_fixture(request):
    yield request.param  # this will `yield` each of the datasets individually, thereby, considering it as individual tests

def test_me(my_fixture):
    assert my_fixture < 4

$ pytest tests/test_me.py -vvv

tests/test_me.py::test_me[0] PASSED                                [ 20%]
tests/test_me.py::test_me[1] PASSED                                [ 40%]
tests/test_me.py::test_me[2] PASSED                                [ 60%]
tests/test_me.py::test_me[3] PASSED                                [ 80%]
tests/test_me.py::test_me[4] FAILED                                [100%]

================================ FAILURES ================================
_______________________________ test_me[4] _______________________________

my_fixture = 4

    def test_me(my_fixture):
>       assert my_fixture < 4
E       assert 4 < 4

tests/test_me.py:14: AssertionError
======================== short test summary info =========================
FAILED tests/test_me.py::test_me[4] - assert 4 < 4
====================== 1 failed, 4 passed in 0.19s =======================
2021-11-29 08:35:15

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่