2016-07-11 21 views
5

Tôi đang gỡ lỗi một lần kiểm tra không liên tục. Vì mục đích này, tôi muốn đổ rất nhiều thông tin gỡ lỗi nếu một thử nghiệm thất bại. Dumping gỡ lỗi thứ là quá trình khá chậm mà sản xuất rất nhiều dữ liệu, vì vậy tôi không muốn làm điều này cho mọi thử nghiệm.Phát hiện xem thử nghiệm đã thất bại trong vòng cố định

Tôi đang sử dụng pytest và năng suất autouse cố định nên làm việc lớn

@pytest.yield_fixture(scope="function", autouse=True) 
def dump_on_failue(request): 
    prepare_debug_dump() 

    yield 

    if test_failed(request): 
     debug_dump() 

Vấn đề là tôi không thể tìm ra cách nào để tôi phát hiện xem thử nghiệm đã thất bại hay không. Có a questions already và thậm chí lưu ý on pytest website:

if request.node.rep_setup.failed: 
     print ("setting up a test failed!", request.node.nodeid) 
    elif request.node.rep_setup.passed: 
     if request.node.rep_call.failed: 
      print ("executing test failed", request.node.nodeid) 

Đáng tiếc là mã này không hoạt động nữa. Không có biểu tượng rep_setup và rep_calls trong đối tượng nút. Tôi đã cố gắng đào yêu cầu và đối tượng nút, nhưng không có may mắn.

Bất kỳ ai biết cách phát hiện xem thử nghiệm có thành công không?

+0

Móc 'pytest_runtest_makereport' trong ví dụ bạn liệt kê * thêm * các thuộc tính' rep_ * 'đó. Bạn có chắc là bạn đã thêm nó không? –

Trả lời

0

Không có biểu tượng rep_setup và rep_calls trong đối tượng nút.

Biểu tượng No.rep_setup và rep_calls vẫn còn đó.

Thêm mã này vào thư mục gốc conftest.py. Nó sẽ kiểm tra vượt qua/thất bại cho mọi chức năng kiểm tra.

import pytest 

@pytest.mark.tryfirst 
def pytest_runtest_makereport(item, call, __multicall__): 
    rep = __multicall__.execute() 
    setattr(item, "rep_" + rep.when, rep) 
    return rep 

@pytest.fixture(scope='function', autouse=True) 
def test_debug_log(request): 
    def test_result(): 
     if request.node.rep_setup.failed: 
      print ("setting up a test failed!", request.node.nodeid) 
     elif request.node.rep_setup.passed: 
      if request.node.rep_call.failed: 
       print ("executing test failed", request.node.nodeid) 
    request.addfinalizer(test_result) 
Các vấn đề liên quan