android 8.1 python,pytest-android

pytest-android

68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f7079746573742d616e64726f69642e737667

68747470733a2f2f696d672e736869656c64732e696f2f707970692f707976657273696f6e732f7079746573742d616e64726f69642e737667

68747470733a2f2f7472617669732d63692e6f72672f656473696f6e313130372f7079746573742d616e64726f69642e7376673f6272616e63683d6d6173746572

pytest-android is a plugin for pytest that provides a configured 'driver' for Android Automated Testing, using uiautomator2.

pytest-android 是 pytest 的插件,它通过 uiautomator2 为 Android 自动化测试提供“驱动”。

目录

主要功能

整合 uiautomator2,实现基于控件的自动化测试

借助 allure 生成测试报告

借助 hook 机制,实现“点击、滑动时自动截图”、“异常时自动抓取控件信息和截图”等 fixture,减少重复工作

通过安装 pytest 插件,实现诸如“失败重试”、“分布式执行”、“用例分层”等

安装

强烈建议 使用 git 对代码进行版本控制,灵活运用分支开发的策略,并且将自动化整合进 DevOps 流程中。

推荐 本地开发使用基于virtualenv的工具实现环境隔离和解决各个模块之间的依赖,如pipenv。

建议 生产环境使用docker对各个设备之间进行“隔离”。

1. 安装 python

macOS、linux可以通过 pyenv 实现多个 python 版本的共存和切换,Windows上需要下载可执行文件、手动安装和配置环境变量。

因为使用了 python 3.6 的 f-string 特性,所以建议的 python 版本大于等于3.6。

具体安装过程略。

2. 创建工程

mkdir demo

cd demo

3. 安装插件和一些可选模块

推荐使用 pipenv 进行环境管理:

# macOS

brew install pipenv

# windows,linux

pip install --user pipenv

# 必须,根据您的配置文件格式,二选一(因为插件目前在 alpha 测试阶段,需要添加`--pre`参数)

# 注意,pipenv在2018.11.26版本之后,才能支持额外(extras)模块(即安装时的中括号语法),所以使用较新的版本、或手动安装

pipenv install --pre pytest-android[yaml]# yaml 作为配置文件,推荐

pipenv install --pre pytest-android[hjson]# json 作为配置文件

# 以下为可选模块,根据需要选择性安装

pipenv install weditor# uiautomator2 的录制工具

pipenv install allure-pytest# 使用 allure 生成报告

pipenv install pytest-rerunfailures# 使 pytest 支持失败重试

PS: pip版本大于等于18时,pipenv需要的最低版本为2018.11.26(如果低于此版本会导致一系列错误)

注意:根据这里的观点,pytest-android 作为 libraries,将部署到某个特定的环境中,然后才能使所有依赖项和子依赖项的确切版本具体化。

使用

1. 创建配置文件

1.1 config.yaml

创建项目级配置文件,参考 config.yaml。此文件可以使用 yaml 和 hjson 格式(由 pytest-variables 插件实现),文件名任意。

配置文件可以同时指定多个(遇到相同字段,后面的会覆盖前面的),借助此功能可以实现:指定设备参数、实现复杂情况下的兼容性测试等。

1.2 pytest.ini

创建 pytest 的配置文件,参考文档进行基础配置。

添加addopts = --variables config.yaml,指定项目配置文件。

1.1 创建配置文件 config.yaml 和 pytest.ini

项目配置文件 config.yaml,pytest 配置文件 pytest.ini ,区别:

pytest.ini 只能有一个,且文件名不可修改;

config.yaml 可以有多个(通过 pytest-variables 插件实现,需在pytest.ini 中指定),文件名任意,并且可以同时载入多个文件(遇到重复字段时,最后一个生效)。

通过配置文件,可以对测试进行参数化配置,提高测试的灵活性,降低代码维护的工作量,和减少可能的疏忽导致的异常。

目前已实现命令行工具,可以直接执行命令下载对应的配置文件示例:

pipenv run python -m pytest_android download --init

如果已经手动创建,或者想重新下载指定的文件,可以附加对应的参数:

pipenv run python -m pytest_android download --pytest.ini

pipenv run python -m pytest_android download --config.yaml

当本地文件与示例文件不一致时,会提示是否覆盖,可以选择N然后手动合并。

1.2 根据需求调整配置[可选]

如果使用 allure 生成报告,并安装了对应依赖,可以通过--alluredir指定报告的路径,通过--clean-alluredir指定开始前是否清理历史数据。更多参数可参考插件文档

如果借助 pytest-rerunfailures 插件实现失败重试,参考插件文档,添加--reruns

其他诸如 log 、markers,和第三方插件配置,根据需要参考对应文档。

2. 编写用例

2.1 可用的Fixtures

此处文档可能更新不及时,通过执行命令python -m pytest --fixtures,可以列出所有 fixtures 及其最新说明文档。

Name

Scope

Autouse

Description

driver

session

True

初始化设备

show_case_name

function

True

toast 提示显示用例描述或名字,便于了解进度

app_start

function

True

启动 app ,(仅)通过当前 app 包名判断是否启动

根据 pytest 的加载顺序,插件中定义的 fixture 是可以被 conftest.py和本地插件pytest_plugins覆盖的。也就是说,如果具体到项目时不满足需求,可以在工程内新建conftest.py文件,编写同名 fixture,修改scope、autoues和其具体行为。

2.2 编写用例

新建文件 test_demo.py,输入以下代码:

#!/usr/bin/env python

# encoding: utf-8

from uiautomator2 import UIAutomatorServer

def test_233(driver: UIAutomatorServer):

print(driver.device_info)

运行:

pipenv run python -m pytest

Issues

如果插件使用中遇到问题,请通过 github issues 提交。

License

Distributed under the terms of the MIT license, "pytest-android" is free and open source software.

根据MIT许可条款分发,“pytest-android”是免费的开源软件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值