搞清楚了相关概念就可以开始尝试用python+appium+behave进行自动化埋点回归测试了
环境搭建
装好python3、appium之后, 用pip 命令安装behave框架
pip install behave
查看 behave支持的语言
behave --lang-list
Languages available:
ar: العربية / Arabic
bg: български / Bulgarian
ca: català / Catalan
cs: Česky / Czech
cy-GB: Cymraeg / Welsh
da: dansk / Danish
de: Deutsch / German
en: English / English
en-Scouse: Scouse / Scouse
en-au: Australian / Australian
en-lol: LOLCAT / LOLCAT
en-pirate: Pirate / Pirate
en-tx: Texan / Texan
eo: Esperanto / Esperanto
es: español / Spanish
et: eesti keel / Estonian
fi: suomi / Finnish
fr: français / French
gl: galego / Galician
he: עברית / Hebrew
hr: hrvatski / Croatian
hu: magyar / Hungarian
id: Bahasa Indonesia / Indonesian
is: Íslenska / Icelandic
it: italiano / Italian
ja: 日本語 / Japanese
ko: 한국어 / Korean
lt: lietuvių kalba / Lithuanian
lu: Lëtzebuergesch / Luxemburgish
lv: latviešu / Latvian
nl: Nederlands / Dutch
no: norsk / Norwegian
pl: polski / Polish
pt: português / Portuguese
ro: română / Romanian
ru: русский / Russian
sk: Slovensky / Slovak
sr-Cyrl: Српски / Serbian
sr-Latn: Srpski (Latinica) / Serbian (Latin)
sv: Svenska / Swedish
tr: Türkçe / Turkish
uk: Українська / Ukrainian
uz: Узбекча / Uzbek
vi: Tiếng Việt / Vietnamese
zh-CN: 简体中文 / Chinese simplified
zh-TW: 繁體中文 / Chinese traditional
查看简体中文的关键字
behave --lang-help zh-CN
Translations for Chinese simplified / 简体中文
And: 而且<
Background: 背景
But: 但是<
Examples: 例子
Feature: 功能
Given: 假如<
Scenario: 场景
Scenario Outline: 场景大纲
Then: 那么<
When: 当<
写测试脚本
1、创建如下目录结构
├── app # 待测app
│ └── TestApp.app
└── features
├── demo.feature # behave待测功能定义
├── environment.py # 环境配置
└── steps
└── step.py # 测试steps
2、测试手机自带计算器的求和功能
#language: zh-CN
功能: 求和
场景: 计算两个数相加
假如 第一个值输入 10
而且 第二个值输入 20
当 点击 求和按钮
那么 结果应该为30
3、创建环境配置文件environment.py
# -*- coding: utf-8 -*
import os
from appium import webdriver
def before_feature(context, feature):
context.driver = webdriver.Remote(
command_executor='http://127.0.0.1:4723/wd/hub',
desired_capabilities={
'app': app,
'platformName': 'ios',
'deviceName': 'iPhone 8',
'platformVersion': '11.1',
'bundleId': 'com.android.calculator2'
})
def after_feature(context, feature):
context.driver.quit()
before_feature 方法是在feature文件运行 之前执行的方法,appium控制手机的一些参数就在这里定义。
after_feature方法是在feature文件运行完毕之后执行的方法。
还有before_scenario、after_scenario、before_step、after_step等方法。
4、创建steps.py 输入以下内容
# -*- coding: utf-8 -*
from behave import *
@when(u'第{num}个值输入{value}')
def step_impl(context):
el = context.driver.find_element_by_id('com.android.calculator2:id/display')
el.clear()
el.send_keys(value)
@when(u'点击{action}')
def step_impl(context):
jia = 'com.android.calculator2:id/plus'
jian = 'com.android.calculator2:id/minus'
cheng = 'com.android.calculator2:id/mul'
chu = 'com.android.calculator2:id/div'
deng = 'com.android.calculator2:id/equal'
if action == '加号':
id = jia
elif action == '减号':
id = jian
elif action == '乘号':
id = cheng
elif action == '除号'
id = chu
else:
id = deng
el = context.driver.find_element_by_accessibility_id(id)
el.click()
@then(u'断言验证结果应该为{sum}')
def step_impl(context):
# el = context.driver.find_element_by_accessibility_id('result')
el = context.driver.find_element_by_id('com.android.calculator2:id/display')
actual = el.get_attribute('value')
print(actual)
assert actual== sum, f'result is {sum}'
steps.py文件里面定义的是一些动作,比如点击、滑动、判断等,动作都是一样的,只是操作的对象不同,我们可以通过传入参数来控制点击的按钮、滑动幅度等,这样即便与维护,又增加了代码的复用性。
5、创建demo.feature文件
Feature:求和
Scenario: 计算器-输入数据-求和
When 第一个值输入10
When 点击加号
When 第二个值输入20
When 点击等号
Then 断言验证结果应该为30
feature文件里面定义了一系列的操作,每一个步骤会调用steps.py里面对应的方法,实际开发中我们只要把step定义好了,后面测试用例的编写只需要新增feature文件就好了,非常的便捷。
6、运行测试
behave -D client=android feature
文章评论