欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
行為驅動(dòng)開(kāi)發(fā):一篇文章帶你用 Python 玩轉 BDD

相信大部分的人都聽(tīng)說(shuō)過(guò) BDD,即:行為驅動(dòng)開(kāi)發(fā),但并未涉及到它的使用方和項目實(shí)戰。

所以,本篇文章將大家全面了解 BDD 及實(shí)現方式,最后使用 Python BDD 框架落地到實(shí)際項目中去。

1. BDD 及優(yōu)勢

BDD,行為驅動(dòng)開(kāi)發(fā)是 敏捷軟件開(kāi)發(fā) 的一種技術(shù),鼓勵軟件項目的所有成員之間的相互協(xié)助

傳統的軟件開(kāi)發(fā)方式主要缺點(diǎn)包含:測試用例比較單一,導致覆蓋率不高;業(yè)務(wù)和產(chǎn)品不能夠全面了解產(chǎn)品的行為表現

BDD 的出現主要優(yōu)勢有下面 2 點(diǎn),主要體現在:

  • 可以很好的減少項目成員之間的溝通成本,增加協(xié)作

  • BDD 能夠將上線(xiàn)之后的手工測試轉換為自動(dòng)化測試,提升測試效率

2. 軟件開(kāi)發(fā)流程

BDD 一般在產(chǎn)品需求文檔審核時(shí)就開(kāi)始介入,產(chǎn)品或業(yè)務(wù)責人提供產(chǎn)品需求文檔的同時(shí),會(huì )提供具體的業(yè)務(wù)場(chǎng)景行為

開(kāi)發(fā)人員根據定義的行為場(chǎng)景,開(kāi)發(fā)軟件,并寫(xiě)場(chǎng)景下面的測試代碼

完成 BDD 先在本地進(jìn)行自測,沒(méi)問(wèn)題之后會(huì )提交到代碼倉庫,最后通過(guò) CI 去持續集成,測試通過(guò)之后才能上線(xiàn)

BDD 的軟件開(kāi)發(fā)流程圖如下:

3. Gherkin 語(yǔ)言及 Features

Gherkin 是 BDD 框架 Cucumber 的功能性語(yǔ)言,能夠通過(guò)自然語(yǔ)言,支持多國語(yǔ)言,描述一個(gè)具體的需求

Gherkin 語(yǔ)言使用的是主要英文關(guān)鍵詞包含:Scenario、Given、when 、And、Then 等;些關(guān)鍵詞可以轉換成中文關(guān)鍵詞,比如:場(chǎng)景、加入、當、那么等。

Features 功能文件一般命名為:*.feature,此文件可以編寫(xiě)具體的需求行為,最后可以支持自動(dòng)化測試

功能文件的編寫(xiě)規范如下:

  • 空格或者制表符用于縮進(jìn)

  • 每一行以 BDD 框架中預設的關(guān)鍵字開(kāi)頭

  • 使用 # 符號在文件內進(jìn)行注釋

  • 無(wú)論是中文或英文編寫(xiě),「  : 」符號只能用英文格式的冒號,否則運行的時(shí)候會(huì )報錯

下面是一個(gè)簡(jiǎn)單的功能文件,描述的是兩個(gè)數相加的邏輯:

# 功能文件(英文)
Feature: Adding
 Scenario: Adding two numbers
 Given the input "1+1"
 When the calculator is run
 Then output should be "2"

4. Behave

Behave 是 Python 的 BDD 框架,并且可以使用命令行工具進(jìn)行測試,使用 pip 可以很方便地進(jìn)行安裝

# 安裝 behave 框架
pip3 install behave

編寫(xiě)完功能文件之后,就可以使用 behave 命令直接運行了

# 直接運行,控制臺查看結果
behave

# 以中文來(lái)運行測試
behave --lang=zh-CN

5. 實(shí)戰一下

下面以自動(dòng)化測試 Google 搜索為例,來(lái)說(shuō)說(shuō)具體的使用方式

第 1 步,編寫(xiě) Features 文件,以中文為例

使用 behave --lang-help zh-CN 命令查看所有的中文關(guān)鍵字:

接著(zhù),利用這些關(guān)鍵字結合具體行為,編寫(xiě)的 Feature 文件如下:

功能: Google搜索模塊測試
  場(chǎng)景大綱: Google搜索一個(gè)關(guān)鍵字功能
   假如 搜索框輸入一個(gè)關(guān)鍵字 <keyword>
  當 點(diǎn)擊搜索按鈕
  那么 頁(yè)面標題應該為 <title>
   例子:
 |   keyword  |   title |
 |
   Python   |   Python - Google 搜索 |
 |   AirPython |   AirPython - Google 搜索   |

需要注意的是,文件中定義了兩個(gè)參數,即:keyword 和 title

實(shí)際項目中大部分的自動(dòng)化測試都是基于數據驅動(dòng)參數化,因此需要搭配「 場(chǎng)景大綱+例子」一起使用。

第 2 步,編寫(xiě) step 文件

在 Features 同級目錄下新建一個(gè) steps 文件夾,接著(zhù),在此文件夾下再新建一個(gè) step.py 文件

然后,就可以對照第 1 步編寫(xiě)的 Features 文件編寫(xiě)測試用例了

借助 @given、@when、@then 裝飾器,將文本內容和參數對應上

最后,使用 Selenium 定義的 API 方法操作元素即可

from time import sleep
from selenium.webdriver.common.keys import Keys
from behave import *


@given(u'搜索框輸入一個(gè)關(guān)鍵字 {keyword}')
def step_impl(context, keyword):
 element_input = context.driver.find_element_by_name('q')
 element_input.clear()
 print("準備輸入")
 element_input.send_keys(keyword)


@when(u'點(diǎn)擊搜索按鈕')
def step_impl(context):
 # 模擬Enter鍵
 context.driver.find_element_by_name("q").send_keys(Keys.ENTER)

 sleep(1)


@then(u'頁(yè)面標題應該為 {title}')
def step_impl(context, title):
 assert context.driver.title == title

需要指出的是,方法名中的第一個(gè)參數 context 是一個(gè)全局的字典,可以在步驟方法之間傳遞數據

第 3 步,編寫(xiě)配置環(huán)境文件 environment.py 

環(huán)境配置文件定義了測試腳本運行過(guò)程中,具體步驟、場(chǎng)景之前和之后要執行的內容

比如,我們before_feature 方法( 每一個(gè) feature 場(chǎng)景執行之前執行 )前初始化 ChromeDriver,打開(kāi)目標網(wǎng)站首頁(yè);然后在 after_feature 方法( feature 場(chǎng)景測試完成之后執行 )后關(guān)閉瀏覽器

def before_feature(context, feature):
 context.driver = webdriver.Chrome()
 context.driver.get("https://www.google.com/")


def after_feature(context, feature):
 context.driver.quit()

第 4 步,轉換 cucumber 測試報告

為了保證下一步在 Jenkins 中能正常顯示測試報告,需要將 behave 生成的測試報告轉換為 cucumber 兼容的 json 測試報告

首先,安裝依賴(lài) behave2cucumber

# json測試報告文件轉換
pip3 install behave2cucumber

然后,在上一步的環(huán)境配置文件中重寫(xiě) after_all 方法,將 behave 格式的測試報告轉換為 cucumber 兼容的測試報告

def after_all(context):
 """
 所有測試完成之后執行
 注意:behave1.2.6生成的json沒(méi)法正常轉換為cucumber兼容的json報告,建議降級為:1.2.5
 :param context:
 :return:
 """


 # 轉換
 with open('./test_report.json',encoding='utf-8'as behave_json:
  # 格式轉換
  cucumberJson = behave2cucumber.convert(json.load(behave_json))

 jsonStr = json.dumps(cucumberJson)

 # 寫(xiě)入
 jsonReport = open(r'./report/jsonReport.json''w',encoding='utf-8')
 jsonReport.write(jsonStr)
 jsonReport.close()

需要注意的是,behave 最新版本轉成的 cucumber 測試報告,在 Jenkins 中沒(méi)法展示出來(lái),建議降低為 1.2.5 版本

第 5 步,本地運行

在 Features 文件同級目錄下,執行下面的命令,將在本地生成格式化后 json 格式的測試報告

# 以中文語(yǔ)言的形式在本地運行
# 在本地產(chǎn)生測試報告
behave --lang=zh-CN -f json.pretty -o './test_report.json'

第 6 步,持續集成

首先搭建 Jenkins 環(huán)境,然后安裝 Cucumber reports 插件

https://plugins.jenkins.io/cucumber-reports

接著(zhù),新建一個(gè) Freestyle project 的任務(wù),添加構建步驟 - Execute Shell,寫(xiě)入要執行的 Python 腳本

# 打開(kāi)目標項目位置
cd /Users/xingag/Desktop/xag/git/marks/Python/測試/Demo/feature_chrome

# 執行測試,并生成測試報告
behave --lang=zh-CN -f json.pretty -o './test_report.json'

最后,添加構建后的操作 - Cucumber reports,指向第 4 步轉換后的 json 格式的測試報告

第 7 步,構建
構建后,測試腳本會(huì )自動(dòng)進(jìn)行執行,然后會(huì )在結果欄生成可視化測試報告

6. 最后

文章只是通過(guò) Python 中的 Behave 框架來(lái)談 BDD 在實(shí)際項目中的用法

如果你想在 Java 或者 Golang 項目中使用,可以直接 JBehave 或者 GoDog 框架來(lái)實(shí)現,除了語(yǔ)法外,基本操作方法類(lèi)似。

文中的完全代碼我已經(jīng)上傳到后臺,回復關(guān)鍵BDD 」獲取全部的源碼文件。

以上便是我今天的分享,如果對你有幫助,可以幫忙轉發(fā)一下。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
五大自動(dòng)化測試的Python框架
bdd
自動(dòng)化測試框架Cucumber和RobotFramework的實(shí)戰對比
移動(dòng)APP自動(dòng)化測試框架對比
第一章 cucumber測試框架綜述
Cucumber測試實(shí)踐
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久