使用python+Behave編寫測試用例

前言

python元素定位

python的BDD框架搪锣,參考這里

demo在這里

除了官方提供的Appium-Python-Client框架,還有一個非官方由網(wǎng)易開源的python客戶端facebook-wda,facebook-wda這個庫的功能非常強大廓奕,可以取代appium飘痛,不過只支持python,Appium支持多種腳本編寫吗跋。

環(huán)境準備

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: roman? / 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: 當<

創(chuàng)建一個iOS測試工程

image.png

寫測試腳本

1秩冈、創(chuàng)建如下目錄結(jié)構

├── app # 待測app
│   └── TestApp.app
└── features
    ├── calculate.feature # behave待測功能定義
    ├── environment.py # 環(huán)境配置
    └── steps
        └── step.py # 測試steps

2本缠、測試求和功能

創(chuàng)建calculate.feature,輸入如下內(nèi)容

#language: zh-CN
功能: 求和
    場景: 計算兩個數(shù)相加
        假如 第一個值輸入 10
        而且 第二個值輸入 20
        當 點擊 求和按鈕
        那么 結(jié)果應該為30

3入问、配置環(huán)境

創(chuàng)建environment.py丹锹,輸入如下內(nèi)容

# -*- 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、創(chuàng)建steps

創(chuàng)建step.py芬失,輸入如下內(nèi)容

# -*- 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'結(jié)果應該為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

https://github.com/behave/behave

http://www.runoob.com/python3/python3-tutorial.html

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末楣黍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子棱烂,更是在濱河造成了極大的恐慌租漂,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颊糜,死亡現(xiàn)場離奇詭異哩治,居然都是意外死亡,警方通過查閱死者的電腦和手機衬鱼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門业筏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鸟赫,你說我怎么就攤上這事蒜胖。” “怎么了抛蚤?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵台谢,是天一觀的道長。 經(jīng)常有香客問我岁经,道長朋沮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任缀壤,我火速辦了婚禮朽们,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诉位。我一直安慰自己,他們只是感情好菜枷,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布苍糠。 她就那樣靜靜地躺著,像睡著了一般啤誊。 火紅的嫁衣襯著肌膚如雪岳瞭。 梳的紋絲不亂的頭發(fā)上拥娄,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天,我揣著相機與錄音瞳筏,去河邊找鬼稚瘾。 笑死,一個胖子當著我的面吹牛姚炕,可吹牛的內(nèi)容都是我干的摊欠。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼柱宦,長吁一口氣:“原來是場噩夢啊……” “哼些椒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掸刊,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤免糕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后忧侧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體石窑,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年蚓炬,在試婚紗的時候發(fā)現(xiàn)自己被綠了松逊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡试吁,死狀恐怖棺棵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情熄捍,我是刑警寧澤烛恤,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站余耽,受9級特大地震影響缚柏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碟贾,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一币喧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧袱耽,春花似錦杀餐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春琼讽,著一層夾襖步出監(jiān)牢的瞬間必峰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工钻蹬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吼蚁,地道東北人。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓问欠,卻偏偏與公主長得像肝匆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子溅潜,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容