对 Device Farm 中的 AWS Appium Python 测试进行故障排除 - AWS Device Farm

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对 Device Farm 中的 AWS Appium Python 测试进行故障排除

以下主题列出了在上传 Appium Python 测试期间出现的错误消息并推荐了解决方法来解决每个错误。

APPIUM_PYTHON_TEST_PACKAGE_UNZIP_FAILED

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们无法打开你的 Appium 测试ZIP文件。请验证文件是否有效,然后重试。

确保您可以解压测试程序包,而不会出现错误。在以下示例中,程序包的名称为 test_bundle.zip

  1. 将您的测试程序包复制到工作目录,然后运行以下命令:

    $ unzip test_bundle.zip
  2. 成功解压缩程序包后,您可以通过运行以下命令找到工作目录树结构:

    $ 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

    有关更多信息,请参阅 Appium 测试和 AWS Device Farm

APPIUM_PYTHON_TEST_PACKAGE_DEPENDENCY_WHEEL_MISSING

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们无法在 wheelhouse 目录树中找到依赖项 wheel 文件。请解压缩您的测试程序包,打开 wheelhouse 目录,并验证至少有一个 wheel 文件在该目录中,然后重试。

确保您可以解压测试程序包,而不会出现错误。在以下示例中,程序包的名称为 test_bundle.zip

  1. 将您的测试程序包复制到工作目录,然后运行以下命令:

    $ unzip test_bundle.zip
  2. 成功解压缩程序包后,您可以通过运行以下命令找到工作目录树结构:

    $ tree .

    如果 Appium Python 包有效,你会发现至少一个 .whl 依赖文件,比如里面突出显示的文件 wheelhouse 目录。

    . |-- 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

    有关更多信息,请参阅 Appium 测试和 AWS Device Farm

APPIUM_PYTHON_TEST_PACKAGE_INVALID_PLATFORM

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们发现至少有一个 wheel 文件指定了我们不支持的平台。请解压缩您的测试程序包,打开 wheelhouse 目录,并验证 wheel 文件的名称以 -any.whl 或 -linux_x86_64.whl 结尾,然后重试。

确保您可以解压测试程序包,而不会出现错误。在以下示例中,程序包的名称为 test_bundle.zip

  1. 将您的测试程序包复制到工作目录,然后运行以下命令:

    $ unzip test_bundle.zip
  2. 成功解压缩程序包后,您可以通过运行以下命令找到工作目录树结构:

    $ tree .

    如果 Appium Python 包有效,你会发现至少一个 .whl 依赖文件,比如里面突出显示的文件 wheelhouse 目录。文件名可能有所不同,但其结尾应为 -any.whl 或者 -linux_x86_64.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

    有关更多信息,请参阅 Appium 测试和 AWS Device Farm

APPIUM_PYTHON_TEST_PACKAGE_TEST_DIR_MISSING

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们无法在您的测试程序包中找到 tests 目录。请解压缩您的测试程序包,验证 tests 目录位于该程序包中,然后重试。

确保您可以解压测试程序包,而不会出现错误。在以下示例中,程序包的名称为 test_bundle.zip

  1. 将您的测试程序包复制到工作目录,然后运行以下命令:

    $ unzip test_bundle.zip
  2. 成功解压缩程序包后,您可以通过运行以下命令找到工作目录树结构:

    $ 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

    有关更多信息,请参阅 Appium 测试和 AWS Device Farm

APPIUM_PYTHON_TEST_PACKAGE_INVALID_TEST_FILE_NAME

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们无法在 tests 目录树中找到有效的测试文件。请解压缩您的程序包,打开 tests 目录,并验证至少有一个文件的名称以关键字“test”开头或结尾,然后重试。

确保您可以解压测试程序包,而不会出现错误。在以下示例中,程序包的名称为 test_bundle.zip

  1. 将您的测试程序包复制到工作目录,然后运行以下命令:

    $ unzip test_bundle.zip
  2. 成功解压缩程序包后,您可以通过运行以下命令找到工作目录树结构:

    $ tree .

    如果 Appium Python 包有效,你会发现 tests 工作目录内的目录。文件名可能不同,但应以 test_ 或者结尾为 _test.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

    有关更多信息,请参阅 Appium 测试和 AWS Device Farm

APPIUM_PYTHON_TEST_PACKAGE_REQUIREMENTS_TXT_FILE_MISSING

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们无法在您的测试程序包中找到 requirements.txt 文件。请解压缩您的测试程序包,验证 requirements.txt 文件位于该程序包中,然后重试。

确保您可以解压测试程序包,而不会出现错误。在以下示例中,程序包的名称为 test_bundle.zip

  1. 将您的测试程序包复制到工作目录,然后运行以下命令:

    $ unzip test_bundle.zip
  2. 成功解压缩程序包后,您可以通过运行以下命令找到工作目录树结构:

    $ 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

    有关更多信息,请参阅 Appium 测试和 AWS Device Farm

APPIUM_PYTHON_TEST_PACKAGE_INVALID_PYTEST_VERSION

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们发现 pytest 版本低于我们支持的最低版本 2.8.0。请更改 requirements.txt 文件内的 pytest 版本,然后重试。

确保您可以解压测试程序包,而不会出现错误。在以下示例中,程序包的名称为 test_bundle.zip

  1. 将您的测试程序包复制到工作目录,然后运行以下命令:

    $ unzip test_bundle.zip
  2. 成功解压缩程序包后,您可以通过运行以下命令找到工作目录树结构:

    $ 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
  3. 要获取 pytest 版本,您可以运行以下命令:

    $ grep "pytest" requirements.txt

    您应找到类似以下内容的输出:

    pytest==2.9.0

    它显示了 pytest 版本,在本例中为 2.9.0。如果 Appium Python 程序包有效,pytest 版本应当高于或等于 2.8.0。

    有关更多信息,请参阅 Appium 测试和 AWS Device Farm

APPIUM_PYTHON_TEST_PACKAGE_INSTALL_DEPENDENCY_WHEELS_FAILED

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们未能安装依赖项 wheel。请解压缩您的测试程序包,打开 requirements.txt 文件和 wheelhouse 目录,并验证 requirements.txt 文件中指定的依赖项 wheel 与 wheelhouse 目录中的依赖项 wheel 完全匹配,然后重试。

我们强烈建议您为包装测试设置 Python virtualenv。以下是使用 Python virtualenv 创建虚拟环境然后将其激活的示例流程:

$ virtualenv workspace $ cd workspace $ source bin/activate

确保您可以解压测试程序包,而不会出现错误。在以下示例中,程序包的名称为 test_bundle.zip

  1. 将您的测试程序包复制到工作目录,然后运行以下命令:

    $ unzip test_bundle.zip
  2. 要测试安装 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
  3. 要停用虚拟环境,您可以运行以下命令:

    $ deactivate

    有关更多信息,请参阅 Appium 测试和 AWS Device Farm

APPIUM_PYTHON_TEST_PACKAGE_PYTEST_COLLECT_FAILED

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们未能在 tests 目录中收集测试。请解压缩您的测试程序包,通过运行命令 py.test --collect-only <path to your tests directory> 验证测试程序包是否有效,然后在该命令未输出任何错误后重试。

我们强烈建议您为包装测试设置 Python virtualenv。以下是使用 Python virtualenv 创建虚拟环境然后将其激活的示例流程:

$ virtualenv workspace $ cd workspace $ source bin/activate

确保您可以解压测试程序包,而不会出现错误。在以下示例中,程序包的名称为 test_bundle.zip

  1. 将您的测试程序包复制到工作目录,然后运行以下命令:

    $ unzip test_bundle.zip
  2. 要安装 wheel 文件,您可以运行以下命令:

    $ pip install --use-wheel --no-index --find-links=./wheelhouse --requirement=./requirements.txt
  3. 要收集测试,您可以运行以下命令:

    $ 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 ====================
  4. 要停用虚拟环境,您可以运行以下命令:

    $ deactivate

    有关更多信息,请参阅 Appium 测试和 AWS Device Farm

APPIUM_PYTHON_TEST_PACKAGE_DEPENDENCY_WHEELS_INSUFFICIENT

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们无法在 wheelhouse 目录中找到足够的 wheel 依赖项。请解压缩您的测试包,然后打开 wheelhouse 目录。确认您已在 requirements.txt 文件中指定了所有 wheel 依赖项。

确保您可以解压测试程序包,而不会出现错误。在以下示例中,程序包的名称为 test_bundle.zip

  1. 将您的测试程序包复制到工作目录,然后运行以下命令:

    $ unzip test_bundle.zip
  2. 检查长度 requirements.txt 文件以及文件数量 .whl wheelhouse 目录中的依赖文件:

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

    如果数量 .whl 依赖文件小于你的非空行数 requirements.txt 文件,那么你需要确保以下几点:

    • 有一个 .whl 与中每一行对应的依赖文件 requirements.txt 文件。

    • 里面没有其他行 requirements.txt 包含依赖包名称以外信息的文件。

    • 没有依赖关系名称在多行中重复 requirements.txt 文件,这样文件中的两行可以对应一行 .whl 依赖文件。

    AWSDevice Farm 不支持 requirements.txt 与依赖包不直接对应的文件,例如为pip install命令指定全局选项的行。有关全局选项的列表,请参阅要求文件格式

    有关更多信息,请参阅 Appium 测试和 AWS Device Farm