精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python自動化測試的五種模型

開發 測試
本篇將列舉實際自動化測試中,Python 自動化測試的五種模型:線性模型、模塊化驅動模型、數據驅動模型、關鍵字驅動模型、行為驅動模型。

1、前言

在自動化測試中,我們往往將自動化腳本都歸納屬于哪種框架模型,比如關鍵字驅動模型等。

本篇將列舉實際自動化測試中,Python 自動化測試的五種模型:線性模型、模塊化驅動模型、數據驅動模型、關鍵字驅動模型、行為驅動模型。

2、線性模型

通過錄制或編寫腳本,一個腳本完成一個場景(一組完整功能操作),通過對腳本的回放進行自動化測試。

腳本代碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)

driver.get('https://www.baidu.com/')
time.sleep(1)
driver.find_element_by_id('kw').send_keys('自動化測試')
time.sleep(1)
driver.find_element_by_id('su').click()
time.sleep(1)
driver.quit()

3、模塊化驅動模型

將腳本中重復可復用的部分拿出來寫成一個公共的模塊,需要的時候就調用它,這樣可以大幅提高測試人員編寫腳本的效率。

框架目錄:

config 存放配置文件。

例如 base_data.json 文件,存放測試地址。

{
  "url": "https://www.baidu.com/"
}

data 存放測試數據。

drivers 存放瀏覽器驅動文件。

report 存放執行完成后的測試報告。

test 存放測試用例。

case 測試用例步驟。

例如 testSearch.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試

import time
import os
import unittest
from selenium import webdriver
from AutomatedTestModel.ModularDriverModel.utils.ReadConfig import ReadConfig
from AutomatedTestModel.ModularDriverModel.test.pages.searchPage import SearchPage

class TestSearch(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(30)

    def tearDown(self):
        self.driver.quit()

    def get_url(self):
        current_path = os.path.abspath((os.path.dirname(__file__)))
        data = ReadConfig().read_json(current_path + "/../../config/base_data.json")
        return data['url']

    def test_search(self):
        url = self.get_url()
        self.driver.get(url)
        time.sleep(1)
        search = SearchPage(self.driver)
        search.search('自動化測試')

if __name__ == '__main__':
    unittest.main()

common 存放公共的方法等。

pages 存放頁面元素與頁面操作。

例如 searchPage.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試

import time

class SearchPage:
    def __init__(self, driver):
        self.driver = driver

    def search_element(self):
        self.kw = self.driver.find_element_by_id('kw')
        self.su = self.driver.find_element_by_id('su')

    def search(self, data):
        self.search_element()
        self.kw.send_keys(data)
        time.sleep(1)
        self.su.click()

runner 存放運行腳本。

例如 main.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試

import os
import time
import unittest
from AutomatedTestModel.ModularDriverModel.utils.HwTestReport import HTMLTestReport

class Main:
    def get_all_case(self):
        current_path = os.path.abspath(os.path.dirname(__file__))
        case_path = current_path + '/../case/'
        discover = unittest.defaultTestLoader.discover(case_path, pattern="test*.py")
        print(discover)
        return discover

    def set_report(self, all_case, report_path=None):
        if report_path is None:
            current_path = os.path.abspath(os.path.dirname(__file__))
            report_path = current_path + '/../../report/'
        else:
            report_path = report_path

        # 獲取當前時間
        now = time.strftime('%Y{y}%m{m}%de00qmsy%H{h}%M{M}%S{s}').format(y="年", m="月", d="日", h="時", M="分", s="秒")
        # 標題
        title = u"搜索測試"
        # 設置報告存放路徑和命名
        report_abspath = os.path.join(report_path, title + now + ".html")
        # 測試報告寫入
        with open(report_abspath, 'wb') as report:
            runner = HTMLTestReport(stream=report,
                                    verbosity=2,
                                    images=True,
                                    title=title,
                                    tester='Meng')
            runner.run(all_case)

    def run_case(self, report_path=None):
        all_case = self.get_all_case()
        self.set_report(all_case, report_path)

if __name__ == '__main__':
    Main().run_case()

utils 存放公共方法。

例如導出報告樣式、讀取配置文件等。

run.py 運行腳本。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試

from AutomatedTestModel.ModularDriverModel.test.runner.main import Main

if __name__ == '__main__':
    Main().run_case()

運行后的測試報告。

4、數據驅動模型

該模型會根據數據的變化而引起測試結果的改變,這顯然是一個非常高級的概念和想法。簡單地說,該模型是一種數據的參數化呈現,即通過輸入不同的參數來驅動程序執行,輸出不同的測試結果。

框架目錄:

case 存放測試用例步驟。

common 存放公共的方法等。

如讀取 Excel 方法、生成報告等樣式。

data 存放測試數據與預期結果。

report 存放執行完成后的測試報告。

打開報告效果。

RunMain.py 運行腳本。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試

import os, time, unittest
from AutomatedTestModel.DataDrivenModeling.common.HwTestReport import HTMLTestReport

class RunMain:
    def get_all_case(self):
        case_path = os.getcwd()
        discover = unittest.defaultTestLoader.discover(case_path,
                                                       pattern="Test*.py")
        print(discover)
        return discover

    def set_report(self, all_case, report_path=None):
        if report_path is None:
            current_path = os.path.abspath(os.path.dirname(__file__))
            report_path = current_path + '/report/'
        else:
            report_path = report_path

        # 獲取當前時間
        now = time.strftime('%Y{y}%m{m}%deue2kie%H{h}%M{M}%S{s}').format(y="年", m="月", d="日", h="時", M="分", s="秒")
        # 標題
        title = u"搜索測試"
        # 設置報告存放路徑和命名
        report_abspath = os.path.join(report_path, title + now + ".html")
        # 測試報告寫入
        with open(report_abspath, 'wb') as report:
            runner = HTMLTestReport(stream=report,
                                    verbosity=2,
                                    images=True,
                                    title=title,
                                    tester='Meng')
            runner.run(all_case)

    def run_case(self, report_path=None):
        all_case = self.get_all_case()
        self.set_report(all_case, report_path)

if __name__ == "__main__":
    RunMain().run_case()

5、關鍵字驅動模型

這是一種通過關鍵字的改變而引起測試結果改變的功能自動化測試模型。QTP(UFT)、Robot Framework 等都是以關鍵字驅動為主的自動化測試工具,這類工具典型的特征就是具備一套易用的可視化界面,測試人員需要做的就是將測試腳本按照“填表格”的方式填入,并考慮三個問題就可以了:我要做什么?對誰做?怎么做?

框架目錄:

action 主要存放動作事件、元素操作。

Action.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試

from AutomatedTestModel.KeywordDrivenModel.common.ExcelUtil import ExcelUtil
from AutomatedTestModel.KeywordDrivenModel.action.ElementOperation import ElementOperation

class Action:
    def __init__(self):
        self.element = ElementOperation()

    def set_value(self, element, action, parameter=None):
        if element == "browser":
            return self.element.browser_operate(action, parameter)
        elif element == "time":
            return self.element.time_operate(action, parameter)
        elif element is None or element == "":
            return
        else: # 如果不是其他的關鍵字,則默認為定位的元素
            return self.element.element_operate(element, action, parameter)

    def case_operate(self, excel, sheet):
        all_case = ExcelUtil(excel_path=excel, sheet_name=sheet).get_case()
        for case in all_case:
            self.set_value(case[0], case[1], case[2])

if __name__ == '__main__':
    excel = '../case/casedata.xlsx'
    Action().case_operate(excel=excel, sheet='搜索')

ElementOperation.py:

case 存放測試用例步驟。

common 存放公共的方法等。

如讀取 Excel 方法等。

RunMain.py 運行腳本。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試

from AutomatedTestModel.KeywordDrivenModel.action.Action import Action

if __name__ == '__main__':
    excel = 'case/casedata.xlsx'
    a = Action().case_operate(excel=excel, sheet='搜索')

6、行為驅動模型

行為驅動開發(Behave Driven Development,簡稱BDD),即從用戶的需求出發強調系統行為。通過將BDD借鑒到自動化測試中,便產生了行為驅動測試模型,這種模型通過使用自然描述語言確定自動化測試腳本,其優點是可使用自然語言編寫測試用例。

框架目錄:

features 存放用例。

steps 存放步驟:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試

import time
from behave import *

@When('打開訪問的網頁 "{url}"')
def step_open(context, url):
    context.driver.get(url)
    time.sleep(5)

@Then('進入百度網站成功')
def step_assert_open(context):
    title = context.driver.title
    assert title == "百度一下,你就知道"

@When('輸入 "{searchdata}"')
def step_search(context, searchdata):
    searchdata_element = context.driver.find_element_by_id('kw')
    searchdata_element.send_keys(searchdata)
    time.sleep(1)
    submit_btn = context.driver.find_element_by_id('su')
    submit_btn.click()

@Then('獲取標題')
def step_assert_search(context):
    success_message = context.driver.title
    assert success_message == "自動化測試_百度搜索"

environment.py 存放變量。

search.feature 存放行為。

report、result 存放報告。

責任編輯:姜華 來源: AllTests軟件測試
相關推薦

2019-04-22 09:00:00

Python框架自動化測試

2019-04-18 09:00:00

Java自動化測試框架

2021-03-23 08:00:00

工具開發審查

2012-02-27 17:34:12

Facebook自動化

2022-02-17 10:37:16

自動化開發團隊預測

2023-10-30 17:41:29

機器人自動化

2022-10-17 15:59:40

Shell腳本終端

2023-03-20 15:14:39

視覺回歸測試軟件開發

2023-03-27 15:37:43

自動化測試開發

2022-02-17 13:03:28

Python腳本代碼

2024-11-21 15:24:49

2022-05-10 11:18:42

自動化測試軟件測試

2022-06-08 14:22:55

自動化測試測試

2021-09-03 09:56:18

鴻蒙HarmonyOS應用

2022-03-15 09:11:42

Python編程模式數據類型

2013-05-16 10:58:44

Android開發自動化測試

2014-04-16 14:15:01

QCon2014

2024-01-19 16:56:04

軟件測試

2021-04-02 09:00:00

Node.js開發工具

2011-12-23 17:09:57

自動化測試
點贊
收藏

51CTO技術棧公眾號

国产精品久久久久久免费免熟| 中文字幕高清视频| 午夜成年人在线免费视频| 国产成人精品1024| 日本一区二区在线免费播放| 激情五月激情综合| 国内视频在线精品| 欧美日韩中字一区| 欧美久久在线观看| 成a人v在线播放| 国产精品一区二区在线观看不卡| 91精品国产91久久久| 在线观看天堂av| 国产一区调教| 欧美精品xxxxbbbb| 国产精品-区区久久久狼| 黄色网在线看| 国产视频一区二区三区在线观看| 91久久精品视频| 中文字幕免费观看| 亚洲美洲欧洲综合国产一区| 丝袜亚洲欧美日韩综合| 三级电影在线看| 奇米一区二区| 欧美探花视频资源| 亚洲精品无码久久久久久| av免费在线免费| 国产欧美精品一区二区色综合 | 国产午夜久久av| 91福利国产精品| 日韩欧美精品免费| 黄网站在线免费| 欧美国产欧美亚州国产日韩mv天天看完整| 91嫩草在线| 国产精品久久久午夜夜伦鲁鲁| 免费日韩av片| 91高清免费视频| 国产精品99re| 欧美午夜精品| 欧美成人合集magnet| 四虎影视1304t| 精品一区二区三区在线| 国产午夜精品麻豆| 波多野结衣先锋影音| 精品素人av| 亚洲精品一区二区三区精华液 | xxx欧美精品| 免费黄色片网站| 国产一区二区三区四区| 日韩精品在线免费观看| 欧美深性狂猛ⅹxxx深喉| 999在线精品| 欧美草草影院在线视频| 99热这里只有精品2| 高清一区二区中文字幕| 7878成人国产在线观看| 涩涩网站在线看| 欧美网站免费| 欧美另类videos死尸| 午夜免费看毛片| 欧美成人精品午夜一区二区| 日韩亚洲欧美成人一区| 国产精品日日摸夜夜爽| 国内精品国产成人国产三级粉色 | 亚洲视频 中文字幕| 第四色中文综合网| 国产视频亚洲精品| 一区二区三区伦理片| 成人高清电影网站| 久久精品国产久精国产一老狼| 丝袜美腿小色网| 欧美另类综合| 91精品国产91久久久久久久久| 亚洲欧美偷拍视频| 青青草成人在线观看| 成人免费自拍视频| 韩国av免费在线观看| 91在线视频在线| 先锋影音网一区| 国产在线91| 亚洲乱码中文字幕综合| 国产在线播放观看| 国产在线|日韩| 欧美一区二区三区四区高清| 伦理片一区二区| 欧美日韩第一| 欧美成人一二三| 日韩毛片在线视频| 人人精品人人爱| 成人在线视频网址| 男同在线观看| 亚洲柠檬福利资源导航| 精品久久久久久久久久中文字幕| 性欧美1819sex性高清| 91精品国产乱码久久蜜臀| 少妇被狂c下部羞羞漫画| 欧美艳星介绍134位艳星| 九九热精品视频国产| 天堂а√在线中文在线新版| 久久99精品国产麻豆婷婷| 动漫精品视频| av一区在线观看| 五月婷婷色综合| 午夜激情av在线| 欧美激情极品| 久久久黄色av| 波多野结衣一区二区三区四区| 国产麻豆精品theporn| 欧美大香线蕉线伊人久久| 国产丝袜在线| 91福利在线导航| 国产女人18毛片水真多18| 日韩久久久久| 欧美中文字幕精品| www黄色网址| 少妇的滋味中文字幕bd| 亚洲先锋成人| 国产精品日日摸夜夜添夜夜av| 亚洲国产精品18久久久久久| 国产精品午夜在线观看| 免费观看国产精品视频| www999久久| 国产一区二区三区丝袜| 日韩成人免费在线观看| 国内精品国产成人| 亚洲国产一区二区精品视频 | 欧洲精品久久久| 亚洲国产成人一区二区| 中文字幕一区二区不卡| jizz欧美激情18| 日韩激情毛片| 午夜精品一区二区三区在线视| 国产精品久久久久久久一区二区| 国产欧美精品一区二区三区四区| 日本成年人网址| 欧美调教网站| 97免费在线视频| 丰满熟妇人妻中文字幕| 亚洲女与黑人做爰| aaa一级黄色片| 久久福利影院| 成人国产精品免费视频| www.黄在线观看| 欧美亚日韩国产aⅴ精品中极品| 91精品小视频| 久久国产主播| 欧美日韩国产高清视频| 深夜成人影院| 国产一区二区三区久久精品| 波多野结衣一本一道| 国产欧美精品国产国产专区| 欧美精品第三页| 精品在线91| 国产成人综合精品| 大胆av不用播放器在线播放| 欧美性生活大片视频| 一区二区三区在线观看免费视频| 日韩精品乱码免费| 亚洲精品成人久久久998| yiren22亚洲综合| www.国产一区| 国产精品亚洲欧美在线播放| 亚洲精品国产品国语在线app| 少妇伦子伦精品无吗| 亚洲理伦在线| 欧美三级电影在线播放| 欧美free嫩15| 另类视频在线观看| 懂色av成人一区二区三区| 精品久久久久久亚洲国产300 | 国产成人精品av在线观| 亚洲一区二区视频| 最近中文字幕无免费| 久久久噜噜噜| 日本xxx免费| 久久99国产精品久久99大师| 欧洲日韩成人av| 在线观看免费黄色| 日韩精品一区二区在线观看| 国产午夜在线播放| 欧美韩国日本不卡| 日韩精品xxx| 久久国产66| 日韩五码在线| 最近2019中文免费高清视频观看www99| 日韩国产成人在线| 国产精品成人免费| 无码人妻久久一区二区三区蜜桃| 一区二区国产精品| 日韩欧美电影一区二区| 成人激情久久| 91wwwcom在线观看| 日本中文字幕在线观看| 精品国产乱码久久久久久浪潮| 中文字幕69页| 亚洲激情在线播放| 新91视频在线观看| 国产一区二区伦理| 久久国产亚洲精品无码| 日韩影院二区| 国产一区免费观看| 国产精品久久久久久久久久齐齐| 欧美猛男性生活免费| 日本韩国一区| 日韩西西人体444www| 久久精品视频5| 亚洲欧美另类小说视频| 人妻精品久久久久中文字幕| 精品一区二区三区在线观看国产 | 91久久中文| 天堂社区 天堂综合网 天堂资源最新版 | 91精品国产高清自在线| 麻豆免费在线观看| 亚洲欧美日韩国产精品| 国内精品偷拍视频| 欧美性xxxxxxxx| wwwwww国产| 一级日本不卡的影视| 成人无码精品1区2区3区免费看| 99免费精品视频| 九九九久久久久久久| 日韩制服丝袜av| heyzo亚洲| 女生裸体视频一区二区三区| 色狠狠久久av五月综合| 一区二区三区日本久久久 | 亚洲免费黄色录像| 久久精品女人天堂| 国产精品后入内射日本在线观看| 一区二区国产在线| 天天成人综合网| 色乱码一区二区三区网站| 欧美亚洲免费高清在线观看 | 亚洲欧美国产精品桃花| 九九热线有精品视频99| 久久国产精品免费一区| 99香蕉久久| 成人精品水蜜桃| 精品国产鲁一鲁****| 91精品国产综合久久香蕉| 另类中文字幕国产精品| 青草热久免费精品视频| 玖玖在线播放| 2018中文字幕一区二区三区| 精品人人视频| 777午夜精品福利在线观看| free性m.freesex欧美| 久久久久久久国产精品| 欧美videos另类精品| 欧美高清视频在线观看| 国产一线二线在线观看| 欧美国产日韩一区二区| 蜜桃传媒在线观看免费进入| 欧美精品免费在线观看| 日本aa在线| 国内精品久久久久久| 国产嫩草在线视频| 国内精品400部情侣激情| 免费成人在线电影| 26uuu日韩精品一区二区| 在线观看爽视频| 国产a∨精品一区二区三区不卡| 日韩av大片站长工具| 国产极品精品在线观看| 视频一区在线免费看| 国产综合视频在线观看| 精品成人18| 国产91免费视频| 亚洲国产合集| 亚洲国产一区二区精品视频 | 亚洲成aⅴ人片久久青草影院| 久久久一本精品99久久精品| 国产亚洲欧美日韩在线观看一区二区| 日韩精品欧美专区| 亚洲国产精品久久久天堂| 青青视频免费在线| 国产亚洲在线| 国产 porn| 国产精品一区免费视频| 欧美大片免费播放器| 欧美国产一区在线| 538任你躁在线精品视频网站| 亚洲国产日韩综合久久精品| 亚洲 欧美 成人| 欧美精品一卡二卡| 色丁香婷婷综合久久| 国产一区二区动漫| 成人日批视频| 国产91色在线| 亚洲精品高潮| 日韩中文一区| 欧美激情一级片一区二区| 国产亚洲天堂网| 精品制服美女久久| 精品国产人妻一区二区三区| 亚洲国产高清在线| 国产无码精品在线播放| 欧美日韩一区二区电影| 色婷婷av一区二区三区之e本道| 一区二区三区国产视频| 丰满的护士2在线观看高清| 国产成人精品在线播放| 亚洲精品高潮| 亚洲欧美精品| 销魂美女一区二区三区视频在线| 亚洲一二三av| 久久网站热最新地址| 国产精品久久久久久久精| 一本大道久久精品懂色aⅴ | 国产99久久久精品| 免费网站在线高清观看| 亚洲一区二区三区爽爽爽爽爽| 影音先锋国产资源| 亚洲精品网址在线观看| 日本在线视频www鲁啊鲁| 国产精品偷伦一区二区| 欧洲vs亚洲vs国产| 国产在线观看欧美| 久久99热狠狠色一区二区| a级大片在线观看| 亚洲电影一级黄| 精品国产va久久久久久久| 在线一区二区日韩| 一区二区精品伦理...| 国产传媒一区二区| 欧美精品日本| 99精品999| ...av二区三区久久精品| 色老头一区二区| 精品偷拍一区二区三区在线看| 日韩成人伦理| 97伦理在线四区| 一区二区三区午夜视频| 激情图片中文字幕| 国产精品对白交换视频| 在线观看一二三区| 中文字幕日韩视频| 日韩高清成人| 蜜桃日韩视频| 老鸭窝毛片一区二区三区| 国产中文字幕一区二区| 五月婷婷欧美视频| 亚州av在线播放| 97视频com| 日韩精品丝袜美腿| 国模吧无码一区二区三区| gogo大胆日本视频一区| 国产成人亚洲欧洲在线| 亚洲第一区中文字幕| av电影在线地址| 精品一区日韩成人| 久久久久国产一区二区| 日韩精品无码一区二区三区久久久 | 亚欧精品在线| 美国十次了思思久久精品导航| 能直接看的av| 欧美日韩的一区二区| 黄色小网站在线观看| 亚洲aⅴ男人的天堂在线观看 | 亚洲日产av中文字幕| 乱子伦视频在线看| 国产精品美女久久久久aⅴ国产馆| 中文永久免费观看| 精品国产自在精品国产浪潮| 激情综合婷婷| 青青草国产精品视频| 久久伊人蜜桃av一区二区| 亚洲欧美一二三区| 日韩在线视频网| 国产一区二区高清在线| 国产精品视频网站在线观看| 北岛玲一区二区三区四区| 特级做a爱片免费69| 一区二区三区亚洲| 国产在线不卡一区二区三区| 菠萝蜜视频在线观看入口| 不卡一区二区中文字幕| 日本黄色中文字幕| 日韩亚洲精品视频| 久久99国产精品久久99大师| 精品久久久久久久免费人妻| 亚洲视频小说图片| 色网站免费观看| 国产日韩欧美日韩大片| 国产精品观看| 欧美福利第一页| 日韩欧美久久久| 校园春色亚洲色图| 亚洲五码在线观看视频| 91麻豆免费视频| 国产一区二区三区黄片| 欧美一级在线亚洲天堂| 首页国产精品| 国产精品无码电影| 91精品在线免费观看| 在线天堂资源www在线污| 一区二区三区精品国产| 99久久伊人精品| 92久久精品一区二区| 538国产精品视频一区二区|