#1. 背景介绍:
为了在自动化测试中节省时间节省真机的成本,而且更高效的覆盖所有的android版本,避免兼容性问题和实现全面自动化测试,我们采用saucelabs(https://saucelabs.com)平台提供的虚拟设备。使用简单易书写的python语言和appium开源框架以及单元测试behave,结合build工具jenkins 实现android 全自动化测试。这样一来就完全不用认为干预,我只需要关注测试结果就ok了。
#2. 环境搭建:
2.1 安装python(https://www.python.org/downloads/)
2.2 安装pip(https://pip.pypa.io/en/stable/installing/)
2.3 注册saucelabs 账号,用于获取SAUCE_USERNAME和SAUCE_ACCESS_KEY
2.4 用pip 安装 appium client和sauceclient:
pip install behave Appium-Python-Client sauceclient
2.5下载安装Win下的Appium(Appium Server)安装并配置环境变量.
2.6下载python IDE (PyCharm)用于编写脚本.
2.7 下载安装Cygwin 用于在windows下运行可以并行执行测试的makefile文件,如果你选择在unix下运行就没必要安装Cygwin,默认可以执行make命令。
3. 关于单元测试behave的介绍:
3.1 Behave是BDD(Behavior drive development - 行为驱动开发)的框架。这个框架用来做敏捷开发比较多。其中behave包括的feature部分。Behave既可以用来测试网页的功能,也可以用来单元测试测试开发者的代码。
3.2 feature文件包括5行: Feature行: 介绍这个feature用来干什么的; Scenario行:介绍这个scenario用来干什么的;Given: 一般数据的初始化在这里执行;When:执行操作;Then:验证结果。
3.3 environment.py文件介绍,environment.py文件定义了一些当测试脚本在run的过程中之前和之后完成的任务:
- before_step(context, step), after_step(context, step)
- 在这里面的脚本会在每一个步骤之前,之后执行
- before_scenario(context, scenario), after_scenario(context, scenario)
- 在这里面的脚本会在每一个场景之前,之后执行
- before_feature(context, feature), after_feature(context, feature)
- 在这里面的脚本会在每一个feature之前,之后执行
- before_tag(context, tag), after_feature(context, tag)
- 在脚本里面可以设置tag(这个之后会介绍),这里面的脚本会在含有tag的模块里面之前,之后执行
- before_all(context), after_all(context)
- 这里面的脚本会在整个脚本开始之前,之后执行 例如登录或者是退出
4. 下面以一个例子来演示工程的新建以及testcase的书写和运行:
4.1 新建一个工程:
4.1.1 打开python IDE(PyCharm) File->New Project->Pure Python 并在Interpreter中选择你的python安装路径,工程名为python-behave-appium(如下图)
4.1.2 在工程中导入behave 单元测试的包,直接复制进来就好了.
4.1.3 在工程中新建文件夹features和 文件makefile,并在features 下新建文件夹steps和文件environment和test.feature(如下图)
4.2 test case 文件内容:
4.2.1 test.feature
Feature: Adding a contact via an Android App
Scenario: Test spotlight application
Given I click on the add contact button
When I enter a name and email
Then I click the Save button
4.2.2 steps.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import behave
from features.module.testcustomview import TestCustomView
from features.module.testsetting import TestSetting