python2 및 python3 버전에서 내 코드를 호환하기 위해 6개를 제공하고 싶습니다. 온라인에서 예제를 얻었지만 아래 코드에서 6개의 예제를 얻을 수 있는 더 많은 소스를 얻지 못했습니다. 테스트 케이스를 위해 다음 줄을 작성했습니다.
class SampleTests(unittest.TestCase):
그리고 메인 내부에서는 클래스를 어떻게 호출했고 , 메인 내부에서는 클래스를 SampleTests
어떻게 호출했습니까?unittest.main()
가능하다면 6개의 모듈 마이그레이션에 대한 몇 가지 샘플 예를 제공해 주세요.
import six
from six.moves import reduce
import unittest
def multiply_values(val1, val2):
return val1*val2
def add_values(val1, val2):
return val1+val2
class SampleTests(unittest.TestCase):
def test_sets_equal(self):
setValue1 = reduce(multiply_values, [1,2])
setValue2 = reduce(add_values, [1,2])
six.assertCountEqual(self, [2,3], [setValue1,setValue2])
if __name__ == '__main__':
unittest.main()
답변1
귀하의 예에서는 six
다음 두 가지 용도로 사용됩니다.
reduce
Python 3에서는 제거되었으며functools.reduce
so 로 대체하여six
편리한 "별명"을 제공하므로reduce
2와 3 모두에서 호출할 수 있습니다.assertCountEqual
Python 3의 단위 테스트의 일부이므로six
여기서는 Python 2에 대한 자체 구현을 제공합니다.
모듈 에 대한 최고의 문서 six
는 다음에서 확인할 수 있습니다.https://six.readthedocs.io/
참고: Python 2는 현재 더 이상 사용되지 않으며 새 프로젝트에 사용하면 안 됩니다. six
두 버전의 Python 모두에서 작동하는 코드를 작성하는 데 도움이 되지만 Python 2를 지원할 타당한 이유가 없다면 더 좋을 것입니다. Python 3 전용 코드를 작성합니다.2to3 도구Python 2 코드를 Python 3으로 변환하는 데 도움을 줄 수 있나요?
테스트 케이스용 클래스를 생성하고 다음 줄을 작성한 이유 class SampleTests(unittest.TestCase): 그리고 메인 내부에서 SampleTests 클래스를 어떻게 호출했는지
이것은 실제로 구체적인 질문이 아닙니다 six
. 이것은 unittest
모듈이 Python 2와 3 모두에서 작동하는 방식입니다.https://docs.python.org/3/library/unittest.html자세한 내용은.
TL;DR 버전: unittest.main()
파일의 모든 테스트 케이스를 자동으로 실행하며 테스트 케이스는 클래스 test_
에서 이름이 시작하는 함수로 정의됩니다 unittest.TestCase
.