前言
python的BDD框架,参考这里
除了官方提供的Appium-Python-Client框架,还有一个非官方由网易开源的python客户端facebook-wda,facebook-wda这个库的功能非常强大,可以取代appium,不过只支持python,Appium支持多种脚本编写。
环境准备
1、安装python3
brew install python3
2、安装Appium-Python-Client
pip3 install Appium-Python-Client
3、安装Behave
pip3 install behave
4、查看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
5、查看对应语言的关键字
behave --lang-help zh-CN
Translations for Chinese simplified / 简体中文
And: 而且<
Background: 背景
But: 但是<
Examples: 例子
Feature: 功能
Given: 假如<
Scenario: 场景
Scenario Outline: 场景大纲
Then: 那么<
When: 当<
创建一个iOS测试工程
写测试脚本
1、创建如下目录结构
├── app # 待测app
│ └── TestApp.app
└── features
├── calculate.feature # behave待测功能定义
├── environment.py # 环境配置
└── steps
└── step.py # 测试steps
2、测试求和功能
创建calculate.feature,输入如下内容
#language: zh-CN
功能: 求和
场景: 计算两个数相加
假如 第一个值输入 10
而且 第二个值输入 20
当 点击 求和按钮
那么 结果应该为30
3、配置环境
创建environment.py,输入如下内容
# -*- coding: utf-8 -*
import os
from appium import webdriver
def before_feature(context, feature):
app = '/Users/yangfangming/Desktop/TestDemo/app/TestApp.app'
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.yfm.TestApp'
})
def after_feature(context, feature):
context.driver.quit()
4、创建steps
创建step.py,输入如下内容
# -*- coding: utf-8 -*
from behave import *
@given(u'第一个值输入 10')
def step_impl(context):
el = context.driver.find_element_by_accessibility_id('textfield1')
el.clear()
el.set_value("10")
@given(u'第二个值输入 20')
def step_impl(context):
el = context.driver.find_element_by_accessibility_id('textfield2')
el.clear()
el.set_value("20")
@when(u'点击 求和按钮')
def step_impl(context):
el = context.driver.find_element_by_accessibility_id('sum')
el.click()
@then(u'结果应该为30')
def step_impl(context):
# el = context.driver.find_element_by_accessibility_id('result')
el = context.driver.find_element_by_class_name('XCUIElementTypeStaticText')
actual = el.get_attribute('value')
print(actual)
assert actual=='30', 'result is 30'
运行测试
behave
# 或者
behave --lang zh-CN
参考
https://github.com/appium/python-client
https://github.com/serhatbolsu/appium-python-bdd/blob/master/testhive/features/steps/steps.py