

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS Device Farm의 Appium Python 테스트 문제 해결
<a name="troubleshooting-appium-python"></a>

다음 항목에서는 Appium Python 테스트를 업로드하는 동안 발생하는 오류 메시지를 나열하고 각 오류를 해결하기 위한 해결 방법을 권장합니다.

## APPIUM\$1PYTHON\$1TEST\$1PACKAGE\$1UNZIP\$1FAILED
<a name="APPIUM_PYTHON_TEST_PACKAGE_UNZIP_FAILED"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

**주의**  
Appium 테스트 ZIP 파일을 열 수 없습니다. 파일이 유효한지 확인하고 다시 시도하세요.

오류 없이 테스트 패키지의 압축을 풀 수 있는지 확인하세요. 다음 예제에서 패키지 이름은 **test\$1bundle.zip**입니다.

1. 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

   ```
   $ unzip test_bundle.zip
   ```

1. 패키지 압축을 성공적으로 푼 후에는 다음 명령을 실행하여 작업 디렉터리 트리 구조를 찾을 수 있습니다.

   ```
   $ tree .
   ```

   유효한 Appium Python 패키지는 다음과 같은 출력이 생성됩니다.

   ```
   .
   |-- requirements.txt
   |-- test_bundle.zip
   |-- tests (directory)
   |      `-- test_unittest.py
   `-- wheelhouse (directory)
          |-- Appium_Python_Client-0.20-cp27-none-any.whl
          |-- py-1.4.31-py2.py3-none-any.whl
          |-- pytest-2.9.0-py2.py3-none-any.whl
          |-- selenium-2.52.0-cp27-none-any.whl
          `-- wheel-0.26.0-py2.py3-none-any.whl
   ```

   자세한 내용은 [Device Farm에서 Appium 테스트 자동 실행Appium 테스트를 Device Farm과 통합](test-types-appium.md) 단원을 참조하세요.

## APPIUM\$1PYTHON\$1TEST\$1PACKAGE\$1DEPENDENCY\$1WHEEL\$1MISSING
<a name="APPIUM_PYTHON_TEST_PACKAGE_DEPENDENCY_WHEEL_MISSING"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

**주의**  
wheelhouse 디렉토리 트리에서 종속성 wheel 파일을 찾을 수 없습니다. 테스트 패키지의 압축을 푼 다음 wheelhouse 디렉터리를 열고 디렉터리에 wheel 파일이 하나 이상 있는지 확인한 다음 다시 시도하세요.

오류 없이 테스트 패키지의 압축을 풀 수 있는지 확인하세요. 다음 예제에서 패키지 이름은 **test\$1bundle.zip**입니다.

1. 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

   ```
   $ unzip test_bundle.zip
   ```

1. 패키지 압축을 성공적으로 푼 후에는 다음 명령을 실행하여 작업 디렉터리 트리 구조를 찾을 수 있습니다.

   ```
   $ tree .
   ```

   Appium Python 패키지가 유효하면 *wheelhouse* 디렉토리에서 강조 표시된 파일과 같은 *.whl* 종속 파일을 하나 이상 찾을 수 있습니다.

   ```
   .
   |-- requirements.txt
   |-- test_bundle.zip
   |-- tests (directory)
   |      `-- test_unittest.py
   `-- wheelhouse (directory)
          |-- Appium_Python_Client-0.20-cp27-none-any.whl
          |-- py-1.4.31-py2.py3-none-any.whl
          |-- pytest-2.9.0-py2.py3-none-any.whl
          |-- selenium-2.52.0-cp27-none-any.whl
          `-- wheel-0.26.0-py2.py3-none-any.whl
   ```

   자세한 내용은 [Device Farm에서 Appium 테스트 자동 실행Appium 테스트를 Device Farm과 통합](test-types-appium.md) 단원을 참조하세요.

## APPIUM\$1PYTHON\$1TEST\$1PACKAGE\$1INVALID\$1PLATFORM
<a name="APPIUM_PYTHON_TEST_PACKAGE_INVALID_PLATFORM"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

**주의**  
지원하지 않는 플랫폼으로 지정된 wheel 파일이 하나 이상 발견되었습니다. 테스트 패키지의 압축을 푼 다음 wheelhouse 디렉토리를 열고 wheel 파일 이름이 -any.whl 또는 -linux\$1x86\$164.whl로 끝나는지 확인한 다음 다시 시도하세요.

오류 없이 테스트 패키지의 압축을 풀 수 있는지 확인하세요. 다음 예제에서 패키지 이름은 **test\$1bundle.zip**입니다.

1. 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

   ```
   $ unzip test_bundle.zip
   ```

1. 패키지 압축을 성공적으로 푼 후에는 다음 명령을 실행하여 작업 디렉터리 트리 구조를 찾을 수 있습니다.

   ```
   $ tree .
   ```

   Appium Python 패키지가 유효하면 *wheelhouse* 디렉토리에서 강조 표시된 파일과 같은 *.whl* 종속 파일을 하나 이상 찾을 수 있습니다. 파일 이름은 다를 수 있지만 플랫폼을 지정하는 *-any.whl* 또는 *-linux\$1x86\$164.whl*로 끝나야 합니다. `windows`와 같은 다른 플랫폼은 지원되지 않습니다.

   ```
   .
   |-- requirements.txt
   |-- test_bundle.zip
   |-- tests (directory)
   |      `-- test_unittest.py
   `-- wheelhouse (directory)
          |-- Appium_Python_Client-0.20-cp27-none-any.whl
          |-- py-1.4.31-py2.py3-none-any.whl
          |-- pytest-2.9.0-py2.py3-none-any.whl
          |-- selenium-2.52.0-cp27-none-any.whl
          `-- wheel-0.26.0-py2.py3-none-any.whl
   ```

   자세한 내용은 [Device Farm에서 Appium 테스트 자동 실행Appium 테스트를 Device Farm과 통합](test-types-appium.md) 단원을 참조하세요.

## APPIUM\$1PYTHON\$1TEST\$1PACKAGE\$1TEST\$1DIR\$1MISSING
<a name="APPIUM_PYTHON_TEST_PACKAGE_TEST_DIR_MISSING"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

**주의**  
테스트 패키지에서 tests 디렉터리를 찾을 수 없습니다. 테스트 패키지의 압축을 풀고 테스트 디렉터리가 패키지 안에 있는지 확인한 다음 다시 시도하세요.

오류 없이 테스트 패키지의 압축을 풀 수 있는지 확인하세요. 다음 예제에서 패키지 이름은 **test\$1bundle.zip**입니다.

1. 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

   ```
   $ unzip test_bundle.zip
   ```

1. 패키지 압축을 성공적으로 푼 후에는 다음 명령을 실행하여 작업 디렉터리 트리 구조를 찾을 수 있습니다.

   ```
   $ tree .
   ```

   Appium Python 패키지가 유효하면 작업 디렉토리 내에서 *tests* 디렉토리를 찾을 수 있습니다.

   ```
   .
   |-- requirements.txt
   |-- test_bundle.zip
   |-- tests (directory)
   |      `-- test_unittest.py
   `-- wheelhouse (directory)
          |-- Appium_Python_Client-0.20-cp27-none-any.whl
          |-- py-1.4.31-py2.py3-none-any.whl
          |-- pytest-2.9.0-py2.py3-none-any.whl
          |-- selenium-2.52.0-cp27-none-any.whl
          `-- wheel-0.26.0-py2.py3-none-any.whl
   ```

   자세한 내용은 [Device Farm에서 Appium 테스트 자동 실행Appium 테스트를 Device Farm과 통합](test-types-appium.md) 단원을 참조하세요.

## APPIUM\$1PYTHON\$1TEST\$1PACKAGE\$1INVALID\$1TEST\$1FILE\$1NAME
<a name="APPIUM_PYTHON_TEST_PACKAGE_INVALID_TEST_FILE_NAME"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

**주의**  
tests 디렉터리 트리에서 유효한 테스트 파일을 찾을 수 없습니다. 테스트 패키지의 압축을 푼 다음 테스트 디렉터리를 열고 하나 이상의 파일 이름이 “test” 키워드로 시작하거나 끝나는지 확인한 다음 다시 시도하세요.

오류 없이 테스트 패키지의 압축을 풀 수 있는지 확인하세요. 다음 예제에서 패키지 이름은 **test\$1bundle.zip**입니다.

1. 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

   ```
   $ unzip test_bundle.zip
   ```

1. 패키지 압축을 성공적으로 푼 후에는 다음 명령을 실행하여 작업 디렉터리 트리 구조를 찾을 수 있습니다.

   ```
   $ tree .
   ```

   Appium Python 패키지가 유효하면 작업 디렉토리 내에서 *tests* 디렉토리를 찾을 수 있습니다. 파일 이름은 다를 수 있지만 *test\$1로* 시작하거나 *\$1test.py*로 끝나야 합니다.

   ```
   .
   |-- requirements.txt
   |-- test_bundle.zip
   |-- tests (directory)
   |      `-- test_unittest.py
   `-- wheelhouse (directory)
          |-- Appium_Python_Client-0.20-cp27-none-any.whl
          |-- py-1.4.31-py2.py3-none-any.whl
          |-- pytest-2.9.0-py2.py3-none-any.whl
          |-- selenium-2.52.0-cp27-none-any.whl
          `-- wheel-0.26.0-py2.py3-none-any.whl
   ```

   자세한 내용은 [Device Farm에서 Appium 테스트 자동 실행Appium 테스트를 Device Farm과 통합](test-types-appium.md) 단원을 참조하세요.

## APPIUM\$1PYTHON\$1TEST\$1PACKAGE\$1REQUIREMENTS\$1TXT\$1FILE\$1MISSING
<a name="APPIUM_PYTHON_TEST_PACKAGE_REQUIREMENTS_TXT_FILE_MISSING"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

**주의**  
테스트 패키지에서 requirements.txt 파일을 찾을 수 없습니다. 테스트 패키지의 압축을 풀고 requirements.txt 파일이 패키지 안에 들어 있는지 확인한 다음 다시 시도하세요.

오류 없이 테스트 패키지의 압축을 풀 수 있는지 확인하세요. 다음 예제에서 패키지 이름은 **test\$1bundle.zip**입니다.

1. 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

   ```
   $ unzip test_bundle.zip
   ```

1. 패키지 압축을 성공적으로 푼 후에는 다음 명령을 실행하여 작업 디렉터리 트리 구조를 찾을 수 있습니다.

   ```
   $ tree .
   ```

   Appium Python 패키지가 유효하면 작업 디렉토리에서 *requirements.txt* 파일을 찾을 수 있습니다.

   ```
   .
   |-- requirements.txt
   |-- test_bundle.zip
   |-- tests (directory)
   |      `-- test_unittest.py
   `-- wheelhouse (directory)
          |-- Appium_Python_Client-0.20-cp27-none-any.whl
          |-- py-1.4.31-py2.py3-none-any.whl
          |-- pytest-2.9.0-py2.py3-none-any.whl
          |-- selenium-2.52.0-cp27-none-any.whl
          `-- wheel-0.26.0-py2.py3-none-any.whl
   ```

   자세한 내용은 [Device Farm에서 Appium 테스트 자동 실행Appium 테스트를 Device Farm과 통합](test-types-appium.md) 단원을 참조하세요.

## APPIUM\$1PYTHON\$1TEST\$1PACKAGE\$1INVALID\$1PYTEST\$1VERSION
<a name="APPIUM_PYTHON_TEST_PACKAGE_INVALID_PYTEST_VERSION"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

**주의**  
pytest 버전이 지원하는 최소 버전인 2.8.0보다 낮은 것으로 확인되었습니다. requirements.txt 파일에서 pytest 버전을 변경한 후 다시 시도하세요.

오류 없이 테스트 패키지의 압축을 풀 수 있는지 확인하세요. 다음 예제에서 패키지 이름은 **test\$1bundle.zip**입니다.

1. 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

   ```
   $ unzip test_bundle.zip
   ```

1. 패키지 압축을 성공적으로 푼 후에는 다음 명령을 실행하여 작업 디렉터리 트리 구조를 찾을 수 있습니다.

   ```
   $ tree .
   ```

   작업 디렉터리에서 *requirements.txt* 파일을 찾을 수 있습니다.

   ```
   .
   |-- requirements.txt
   |-- test_bundle.zip
   |-- tests (directory)
   |      `--test_unittest.py
   `-- wheelhouse (directory)
          |-- Appium_Python_Client-0.20-cp27-none-any.whl
          |-- py-1.4.31-py2.py3-none-any.whl
          |-- pytest-2.9.0-py2.py3-none-any.whl
          |-- selenium-2.52.0-cp27-none-any.whl
          `-- wheel-0.26.0-py2.py3-none-any.whl
   ```

1. pytest 버전을 가져오려면 다음 명령을 실행하면 됩니다.

   ```
   $ grep "pytest" requirements.txt
   ```

   그러면 다음과 같은 결과가 표시됩니다.

   ```
   pytest==2.9.0
   ```

   여기에는 pytest 버전이 표시되는데, 이 예제에서는 2.9.0입니다. Appium Python 패키지가 유효하다면, pytest 버전은 2.8.0보다 높거나 같아야 합니다.

   자세한 내용은 [Device Farm에서 Appium 테스트 자동 실행Appium 테스트를 Device Farm과 통합](test-types-appium.md) 단원을 참조하세요.

## APPIUM\$1PYTHON\$1TEST\$1PACKAGE\$1INSTALL\$1DEPENDENCY\$1WHEELS\$1FAILED
<a name="APPIUM_PYTHON_TEST_PACKAGE_INSTALL_DEPENDENCY_WHEELS_FAILED"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

**주의**  
종속성 wheel을 설치하지 못했습니다. 테스트 패키지의 압축을 푼 다음 requirements.txt 파일과 wheelhouse 디렉터리를 열고 requirements.txt 파일에 지정된 종속성 wheel이 wheelhouse 디렉터리 내의 종속성 wheel과 정확히 일치하는지 확인한 다음 다시 시도하세요.

패키징 테스트를 위해 [Python virtualenv](https://pypi.python.org/pypi/virtualenv)를 설정하는 것이 좋습니다. 다음은 Python virtualenv를 사용하여 가상 환경을 만든 다음 활성화하는 예제 흐름입니다.

```
$ virtualenv workspace
$ cd workspace 
$ source bin/activate
```

오류 없이 테스트 패키지의 압축을 풀 수 있는지 확인하세요. 다음 예제에서 패키지 이름은 **test\$1bundle.zip**입니다.

1. 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

   ```
   $ unzip test_bundle.zip
   ```

1. wheel 파일 설치를 테스트하려면 다음 명령을 실행할 수 있습니다.

   ```
   $ pip install --use-wheel --no-index --find-links=./wheelhouse --requirement=./requirements.txt
   ```

   유효한 Appium Python 패키지는 다음과 같은 출력이 생성됩니다.

   ```
   Ignoring indexes: https://pypi.python.org/simple
   Collecting Appium-Python-Client==0.20 (from -r ./requirements.txt (line 1))
   Collecting py==1.4.31 (from -r ./requirements.txt (line 2))
   Collecting pytest==2.9.0 (from -r ./requirements.txt (line 3))
   Collecting selenium==2.52.0 (from -r ./requirements.txt (line 4))
   Collecting wheel==0.26.0 (from -r ./requirements.txt (line 5))
   Installing collected packages: selenium, Appium-Python-Client, py, pytest, wheel
     Found existing installation: wheel 0.29.0
       Uninstalling wheel-0.29.0:
         Successfully uninstalled wheel-0.29.0
   Successfully installed Appium-Python-Client-0.20 py-1.4.31 pytest-2.9.0 selenium-2.52.0 wheel-0.26.0
   ```

1. 가상 환경을 비활성화하려면 다음 명령을 실행하세요.

   ```
   $ deactivate
   ```

   자세한 내용은 [Device Farm에서 Appium 테스트 자동 실행Appium 테스트를 Device Farm과 통합](test-types-appium.md) 단원을 참조하세요.

## APPIUM\$1PYTHON\$1TEST\$1PACKAGE\$1PYTEST\$1COLLECT\$1FAILED
<a name="APPIUM_PYTHON_TEST_PACKAGE_PYTEST_COLLECT_FAILED"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

**주의**  
tests 디렉터리에서 테스트를 수집하지 못했습니다. `py.test --collect-only <path to your tests directory>` 명령을 실행하여 테스트 패키지가 유효한지 확인하기 위해 테스트 패키지의 압축을 풀고, 명령에서 오류가 출력되지 않으면 다시 시도하세요.

패키징 테스트를 위해 [Python virtualenv](https://pypi.python.org/pypi/virtualenv)를 설정하는 것이 좋습니다. 다음은 Python virtualenv를 사용하여 가상 환경을 만든 다음 활성화하는 예제 흐름입니다.

```
$ virtualenv workspace
$ cd workspace 
$ source bin/activate
```

오류 없이 테스트 패키지의 압축을 풀 수 있는지 확인하세요. 다음 예제에서 패키지 이름은 **test\$1bundle.zip**입니다.

1. 테스트 패키지를 작업 디렉터리에 복사한 후 다음 명령을 실행하세요.

   ```
   $ unzip test_bundle.zip
   ```

1. wheel 파일을 설치하려면 다음 명령을 실행할 수 있습니다.

   ```
   $ pip install --use-wheel --no-index --find-links=./wheelhouse --requirement=./requirements.txt
   ```

1. 테스트를 수집하려면 다음 명령을 실행할 수 있습니다.

   ```
   $ py.test --collect-only tests
   ```

   유효한 Appium Python 패키지는 다음과 같은 출력이 생성됩니다.

   ```
   ==================== test session starts ====================
   platform darwin -- Python 2.7.11, pytest-2.9.0, py-1.4.31, pluggy-0.3.1
   rootdir: /Users/zhena/Desktop/Ios/tests, inifile:
   collected 1 items
   <Module 'test_unittest.py'>
     <UnitTestCase 'DeviceFarmAppiumWebTests'>
       <TestCaseFunction 'test_devicefarm'>
   
   ==================== no tests ran in 0.11 seconds ====================
   ```

1. 가상 환경을 비활성화하려면 다음 명령을 실행하세요.

   ```
   $ deactivate
   ```

   자세한 내용은 [Device Farm에서 Appium 테스트 자동 실행Appium 테스트를 Device Farm과 통합](test-types-appium.md) 단원을 참조하세요.

## APPIUM\$1PYTHON\$1TEST\$1PACKAGE\$1DEPENDENCY\$1WHEELS\$1INSUFFICIENT
<a name="APPIUM_PYTHON_TEST_PACKAGE_DEPENDENCY_WHEELS_INSUFFICIENT"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

**주의**  
wheelhouse 디렉토리에서 충분한 wheel 종속성을 찾을 수 없습니다. 테스트 패키지의 압축을 푼 다음, wheelhouse 디렉토리를 여세요. requirements.txt 파일에 모든 wheel 종속성이 지정되어 있는지 확인하세요.

오류 없이 테스트 패키지의 압축을 풀 수 있는지 확인하세요. 다음 예제에서 패키지 이름은 **test\$1bundle.zip**입니다.

1. 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

   ```
   $ unzip test_bundle.zip
   ```

1. *requirements.txt* 파일의 길이와 wheelhouse 디렉터리에 있는 *.whl* 종속 파일 수를 확인하세요.

   ```
   $ cat requirements.txt | egrep "." |wc -l
   ﻿    12
   $ ls wheelhouse/ | egrep ".+\.whl" | wc -l
       11
   ```

   *.whl* 종속 파일 수가 *requirements.txt* 파일의 비어 있지 않은 행 수보다 적은 경우 다음 사항을 확인해야 합니다.
   + *requirements.txt* 파일의 각 행에 해당하는 *.whl* 종속 파일이 있습니다.
   + *requirements.txt* 파일에는 종속성 패키지 이름 이외의 정보가 들어 있는 다른 행이 없습니다.
   + *requirements.txt* 파일에는 종속성 이름이 여러 줄에 중복되지 않으므로 파일의 두 줄이 하나의 *.whl* 종속 파일 하나와 일치할 수 있습니다.

   AWS Device Farm은 *requirements.txt* 파일에서 종속성 패키지에 직접 대응하지 않는 줄(예: `pip install` 명령에 대한 글로벌 옵션을 지정하는 줄)을 지원하지 않습니다. 글로벌 옵션 목록은 [요구 사항 파일 형식](https://pip.pypa.io/en/stable/reference/requirements-file-format/#global-options)을 참조하세요.

   자세한 내용은 [Device Farm에서 Appium 테스트 자동 실행Appium 테스트를 Device Farm과 통합](test-types-appium.md) 단원을 참조하세요.