programing

코의 assert_raises를 사용하는 방법?

projobs 2021. 1. 17. 10:21
반응형

코의 assert_raises를 사용하는 방법?


문서를 검색했지만 찾을 수 없습니다. 별로 설명하지 않는 커플이 있었다.

누군가 나에게 코의 설명을 할 수 있습니까?

assert_raises(what should I put here?)

기능 및 사용 방법?


assert_raises()기능은 특정 매개 변수되게 할 때 반드시 함수 호출은 지정된 예외가 발생하게 테스트합니다.

예를 들어, add두 개의 숫자를 더하는 함수 가있는 TypeError경우 정수와 문자열을 전달할 때 a를 발생 시켜야 합니다. 그래서:

from nose.tools import assert_raises

def add(x, y):
    return x + y

assert_raises(TypeError, add, 2, "0")

첫 번째 인수는 예상되는 예외 유형입니다. 두 번째는 호출 할 함수입니다. 인수의 나머지 부분 (이 경우가 될 것이다 함수에 전달됩니다 xy기능 내부).

함수에 의해 예상 된 예외가 발생하면 어설 션이 전달됩니다.


받아 들여지는 대답은 정확하지만 assert_raises방법에 더 나은 사용이 있다고 생각 합니다.

단순히 예외가 발생한다고 주장하고 싶다면 @raises구문 을 사용하는 것이 더 간단하고 깔끔 할 것 입니다.

@raises(HTTPError)
def test_exception_is_raised:
    call_your_method(p1, p2)

그러나 발생한 예외에 대해 더 많은 작업을 수행하고 싶다고 가정합니다. 예를 들어, 발생한 HTTPError가 500 : Server Error 대신 401 : Unauthorized 유형이라고 주장해야합니다 .

위의 구문은 도움이되지 않는 이러한 상황에서 assert_raisesbut을 다른 방식으로 사용해야합니다 . callable두 번째 매개 변수로 전달하지 않으면 assert_raises예외 세부 정보를 추가로 테스트하는 데 사용할 수있는 컨텍스트가 반환됩니다.

def test_exception_is_raised:
    with assert_raises(HTTPError) as cm:
         call_your_method(p1, p2)
    ex = cm.exception # raised exception is available through exception property of context
    ok_(ex.code == 401, 'HTTPError should be Unauthorized!')

참조 URL : https://stackoverflow.com/questions/11767938/how-to-use-noses-assert-raises

반응형