python2 및 python3 버전에서 호환되는 Six Module을 사용하여 코드를 마이그레이션하는 방법 [닫기]

python2 및 python3 버전에서 호환되는 Six Module을 사용하여 코드를 마이그레이션하는 방법 [닫기]

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다음 두 가지 용도로 사용됩니다.

  • reducePython 3에서는 제거되었으며 functools.reduceso 로 대체하여 six편리한 "별명"을 제공하므로 reduce2와 3 모두에서 호출할 수 있습니다.
  • assertCountEqualPython 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.

관련 정보