복붙노트

[PYTHON] "assert False"및 "self.assertFalse"의 장점 또는 차이점은 무엇입니까?

PYTHON

"assert False"및 "self.assertFalse"의 장점 또는 차이점은 무엇입니까?

나는 테스트를 쓰고 있는데 어떤 사람들은 False를 선언하기보다는 self.assertFalse를 사용한다고 들었다. 왜 이것이 있으며 어떤 장점이 있습니까?

해결법

  1. ==============================

    1.assert False는 유용한 로깅 정보없이 예외를 throw합니다. 테스트에 오류가있었습니다.

    assert False는 유용한 로깅 정보없이 예외를 throw합니다. 테스트에 오류가있었습니다.

    self.assertFalse ()는 메시지 및 테스트 이름과 같은 테스트 실패 정보와 함께 테스트 실패 예외를 발생시킵니다.

    오류 - 테스트가 실행될 수 없으며 실패 - 테스트 코드가 작동했지만 잘못된 대답이 생성 된 것의 차이가 있습니다.

    오류는 코드에서 심각한 문제입니다.

    실패는 바로 고쳐야 할 실패입니다.

  2. ==============================

    2.너가 달리는 경우에

    너가 달리는 경우에

    import unittest
    
    class Test_Unittest(unittest.TestCase):
        def test_assert(self):
            assert False
        def test_assertFalse(self):
            self.assertFalse(True)
    
    if __name__ == '__main__':
        unittest.main()
    

    같은 로깅 정보를 얻습니다. 동일한 실패입니다.

    FF
    ======================================================================
    FAIL: test_assert (__main__.Test_Unittest)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/home/unutbu/pybin/test.py", line 6, in test_assert
        assert False
    AssertionError
    
    ======================================================================
    FAIL: test_assertFalse (__main__.Test_Unittest)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/home/unutbu/pybin/test.py", line 8, in test_assertFalse
        self.assertFalse(True)
    AssertionError
    
    ----------------------------------------------------------------------
    Ran 2 tests in 0.000s
    
    FAILED (failures=2)
    

    그 이유는 unittest.TestCase가 다음을 정의하기 때문입니다.

    failureException = AssertionError
    

    Assert False라고하면 AssertionError가 발생합니다.

    self.assertFalse (True)라고 말하면 failureExeception이 발생합니다.

    이러한 예외가 동일하기 때문에 명백한 차이가 없습니다.

    assert와 self.assertFalse는 기존의 사용법에서는 다르다.

    assert는 특정 조건이 코드의 특정 지점에서 유지되어야 함을 선언하는 데 사용됩니다. 개발 중에는 버팀목으로 사용되지만 생산 코드에는 사용되지 않습니다. python -Oy my_unittest.py를 실행하면 모든 assert 문이 무시됩니다. 그럴 경우 어설 션의 의도 된 사용법을 파괴 할 수 있습니다. 단, 실패가있을 때도 단위 테스트를 통과 할 수 있습니다.

    비록 (-O 플래그없이) 결과가 동일하더라도 assert는 단위 테스트 코드에서 사용하기위한 것이 아닙니다. 단위 테스트를 작성할 때는 self.assertTrue 또는 self.assertFalse를 사용하십시오.

  3. ==============================

    3.지금까지 해답이 언급되지 않은 한 가지 점은 python의 내부 검사 마법을 사용하여 다음과 같은 단위 테스트를 작성할 수있는 몇 가지 테스트 프레임 워크 (예 : py.test 및 nose)가 있다는 것입니다.

    지금까지 해답이 언급되지 않은 한 가지 점은 python의 내부 검사 마법을 사용하여 다음과 같은 단위 테스트를 작성할 수있는 몇 가지 테스트 프레임 워크 (예 : py.test 및 nose)가 있다는 것입니다.

    # test_this_and_that.py
    def test_frobber():
        assert frobber('x') == 'y'
    # EOF
    

    위에서 본 Unittest 상용구를 필요로하지 않습니다. 그래서 어떤 경우에는 그것은 단지 framwork / stylistic 문제로 귀결 될 수 있습니다.

  4. from https://stackoverflow.com/questions/2958169/what-are-the-advantages-or-difference-in-assert-false-and-self-assertfalse by cc-by-sa and MIT license