精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

免费人成视频在线播放| 日本精品免费视频| 亚洲乱码国产乱码精品| 日韩成人免费| 欧美一区二区三区四区五区| 99在线观看视频免费| 精品亚洲成a人片在线观看| 日本视频一区二区| 欧美精品激情视频| 三上悠亚影音先锋| 日韩视频1区| 日本道在线观看一区二区| eeuss中文| 久热av在线| 国产在线精品国自产拍免费| 全亚洲最色的网站在线观看| 午夜国产福利一区二区| 天堂一区二区三区四区| 91麻豆精品国产91久久久资源速度 | 99热这里只有精| 久久在线精品| 久久久亚洲国产天美传媒修理工| 性の欲びの女javhd| 国产精品18hdxxxⅹ在线| 欧美日韩精品是欧美日韩精品| 欧美精品自拍视频| www免费视频观看在线| 国产亚洲欧洲一区高清在线观看| 国内视频一区二区| 国产黄频在线观看| 久久99久久99精品免视看婷婷 | 日韩毛片免费视频一级特黄| 日韩欧美精品中文字幕| 精品国产一区二区三区无码| 久久久久久国产精品免费无遮挡| 国产视频一区在线播放| 久久精品二区| 黄色av一区二区三区| 免费观看久久久4p| 国产成人拍精品视频午夜网站| 日韩人妻无码一区二区三区99| 好看的av在线不卡观看| 久久久久北条麻妃免费看| 色欲狠狠躁天天躁无码中文字幕| 美女亚洲一区| 亚洲美女又黄又爽在线观看| 亚洲一区二区三区无码久久| 老司机精品在线| 亚洲韩国欧洲国产日产av| 一级黄色片在线免费观看| 激情久久一区二区| 欧美三级视频在线| 三上悠亚在线一区二区| 韩国精品主播一区二区在线观看 | 一级黄色录像在线观看| 日韩制服一区| 精品视频色一区| 国产九九在线观看| 国产精品伊人| 欧美日韩国产大片| 97人人爽人人| 精品一区二区三区四区五区| 日韩一区二区在线观看视频 | 久久久久一区二区三区四区| 鲁丝一区鲁丝二区鲁丝三区| 毛片在线播放网站| 国产欧美精品国产国产专区 | 麻豆网站在线| 亚洲精品中文在线影院| 蜜桃视频一区二区在线观看| 国产三级伦理在线| 天天影视涩香欲综合网| 日日碰狠狠躁久久躁婷婷| 日韩在线影院| 欧美精品在线一区二区三区| 手机免费看av网站| 试看120秒一区二区三区| 精品国产乱码久久| 亚洲av无码一区二区三区人| 色小子综合网| 久久久亚洲国产天美传媒修理工| 四虎成人永久免费视频| 日韩精品福利网| 91精品视频免费观看| 国产小视频免费观看| 久久亚洲综合色一区二区三区| 日韩亚洲一区在线播放| 成a人片在线观看| 亚洲国产精品一区二区www在线| 91好吊色国产欧美日韩在线| 久久99久久久精品欧美| 日韩视频一区二区| 丰满大乳奶做爰ⅹxx视频 | 成人国产精品免费| 欧美一级日本a级v片| 久久99精品久久| 欧美日韩美女在线观看| 老司机午夜性大片| 美国成人xxx| 中文字幕亚洲无线码在线一区| 青青草偷拍视频| 欧美一级播放| 亚洲尤物视频网| 国自产拍在线网站网址视频| 中文字幕亚洲区| 秋霞无码一区二区| 成人精品国产亚洲| 亚洲精品一区二区三区99| 夫妇交换中文字幕| 伊人久久大香线蕉综合热线| 国产欧美日韩精品专区| 日批免费在线观看| 中文字幕一区二区三区在线播放| 青娱乐自拍偷拍| 99精品视频在线免费播放| 日韩精品在线观看一区| 国产精品久久久久久久精| 午夜在线播放视频欧美| 91麻豆精品秘密入口| yjizz视频网站在线播放| 亚洲影视在线观看| 天天色综合社区| 图片婷婷一区| 久久久久国产精品免费| 国产欧美第一页| 中文字幕第一区| 黑森林福利视频导航| 国产区精品视频在线观看豆花| 日韩中文字幕在线视频播放| 91视频久久久| 91论坛在线播放| 国产日韩av网站| 亚洲国产精品免费视频| 精品国产一区二区在线| 国产美女www爽爽爽| 91论坛在线播放| 国产视频一视频二| 国语一区二区三区| 日韩一区二区欧美| 正在播放木下凛凛xv99| 国产亚洲综合在线| 毛葺葺老太做受视频| 色爱av综合网| 日韩美女视频免费看| 色欲av永久无码精品无码蜜桃| 一区二区三区四区中文字幕| 99视频在线观看视频| 97国产成人高清在线观看| 国产精品久久久久久网站| 国产在线91| 在线观看日韩国产| 成人性生交大片免费看无遮挡aⅴ| 国产精品综合色区在线观看| 久久久久久国产精品一区| 国模精品视频| 亚洲欧洲偷拍精品| 亚洲精品一区二三区| 日本一区二区视频在线观看| 日本老熟妇毛茸茸| 精品国产91| 国产欧美一区二区三区在线看| www.av在线播放| 欧美精品乱人伦久久久久久| 看免费黄色录像| 国产福利一区二区三区视频在线| 精品无码av无码免费专区| 136福利精品导航| 性欧美在线看片a免费观看| 天堂中文在线官网| 欧美性高潮在线| 中文字幕免费视频| 美女www一区二区| 最新av在线免费观看| 日韩中文一区二区| 久久久久久久一| 免费在线看v| 欧美性猛片xxxx免费看久爱| 女同久久另类69精品国产 | 男人天堂av电影| 久久精品国产亚洲高清剧情介绍| 男人j进女人j| 日韩高清一级| 日本成熟性欧美| 国产大片在线免费观看| 欧美日韩精品一区二区三区蜜桃 | 在线观看日韩精品| 黄色片在线观看免费| 日本一区中文字幕 | 久久精品人人| 欧美精品一区二区性色a+v| 红杏aⅴ成人免费视频| 国产精品扒开腿做| 日韩123区| 在线播放国产一区中文字幕剧情欧美 | 狠狠v欧美v日韩v亚洲ⅴ| 日本久久久网站| 成人一区而且| 国产一区二区在线网站| 国语自产精品视频在线看抢先版结局| 欧美日韩成人在线视频| 毛片在线免费| 精品国产露脸精彩对白| 在线免费看av片| 亚洲3atv精品一区二区三区| 日韩精品久久久久久久的张开腿让| 丁香啪啪综合成人亚洲小说| 国产91色在线观看| 亚洲精品激情| 免费成人深夜夜行网站视频| 亚洲精品国产动漫| 98国产高清一区| 免费污视频在线一区| 久久久免费在线观看| 免费在线观看黄色| 亚洲毛片在线免费观看| www国产在线| 欧美精品一二三四| 欧美性猛交xxxx乱大交hd| 亚洲福利一区二区三区| 欧美日韩午夜视频| 中文字幕乱码亚洲精品一区| 欧美图片一区二区| 99视频超级精品| 岛国大片在线免费观看| 极品尤物av久久免费看| 少妇黄色一级片| 久久电影一区| 日韩激情免费视频| 亚洲经典在线看| 成人免费在线网| 国产一区二区三区自拍| 亚洲第一综合网站| 91欧美在线| 一区二区视频在线免费| 成人在线视频免费观看| 日韩精品欧美在线| 国内精品视频在线观看| 欧美专区一二三| 视频一区中文| 日本一区二区三区在线视频| 亚洲影院天堂中文av色| 精品一区二区三区视频日产| 国产精品巨作av| 国产精选一区二区| 久久精品福利| 久久av一区二区三区漫画| 狼人天天伊人久久| 六月婷婷久久| 神马久久一区二区三区| 日韩视频专区| 国产精品久久久久久久免费观看| 伊人精品久久久久7777| 99久久亚洲精品| 99热都是精品| 亚洲无线视频| 国产在线青青草| 老司机精品视频网站| 天天操天天爱天天爽| 久久91精品国产91久久小草| 天天色天天综合网| 国产电影精品久久禁18| 少妇被狂c下部羞羞漫画| 99久久久久久| 无码少妇精品一区二区免费动态| 国产欧美日韩精品一区| 小向美奈子av| 亚洲永久精品国产| 天天爽夜夜爽夜夜爽精品| 色欧美乱欧美15图片| 一级日韩一级欧美| 日韩亚洲欧美一区| 无码国产精品高潮久久99| 亚洲乱码一区av黑人高潮| lutube成人福利在线观看| 日韩中文字幕在线看| 好看的中文字幕在线播放| 欧美在线播放视频| 国产成人亚洲一区二区三区| 亚洲最大福利视频| 亚洲国产国产| 中文字幕日韩一区二区三区| 影音先锋亚洲一区| 久草在在线视频| 国产乱人伦偷精品视频不卡 | 婷婷成人综合| 日本黄色播放器| 国产日韩一区| 亚洲制服在线观看| 久久婷婷色综合| 一区二区视频免费看| 欧美日韩亚洲视频| av中文字幕观看| 日韩av在线电影网| 国产原创精品视频| 日本中文字幕久久看| 亚洲国产精品免费视频| 日韩福利影院| 一区二区三区福利| 91热视频在线观看| 2019国产精品| 激情小说中文字幕| 欧美日韩日日骚| 偷拍精品一区二区三区| 久久av.com| av成人在线观看| 精品国产一区二区三区日日嗨 | 久久精品无码一区二区三区| 久久婷婷一区二区| 欧美日韩精品专区| 免费观看成年在线视频网站| 久久综合久久八八| 欧美特大特白屁股xxxx| 国产精品对白一区二区三区| 97国产成人高清在线观看| 粗暴91大变态调教| a级精品国产片在线观看| 国产黄色录像片| 欧美影视一区在线| 日本私人网站在线观看| 色综合久久精品亚洲国产| 欧美亚洲二区| 五月天色一区| 麻豆久久婷婷| 亚洲黄色在线网站| 精品久久久久久久中文字幕| 午夜精品久久久久久久96蜜桃 | 国产精品不卡av| 欧美一级高清大全免费观看| jizz在线免费观看| 茄子视频成人在线| 亚洲精品无吗| 欧美深夜福利视频| 成人av在线影院| 久久精品波多野结衣| 日韩一级片网站| 主播国产精品| aa日韩免费精品视频一| 综合天天久久| 久草福利在线观看| 亚洲精品视频在线| 99在线观看免费| 欧美精品生活片| 视频在线观看免费影院欧美meiju| 国产精品美女在线播放| 国产真实乱偷精品视频免| 亚洲AV成人无码精电影在线| 在线成人午夜影院| 国产精品扒开做爽爽爽的视频| 成人性生交大片免费观看嘿嘿视频| 91麻豆精品国产91久久久平台| 第一区免费在线观看| 亚洲精品免费一二三区| www.久久久久久久久久| 欧美极品少妇xxxxⅹ免费视频 | 狠狠干视频网站| 国产91高潮流白浆在线麻豆| 久久久久香蕉视频| 亚洲第一精品电影| 在线免费av资源| 日本三级中国三级99人妇网站| 日韩高清一区二区| 国产传媒在线看| 制服丝袜国产精品| 女子免费在线观看视频www| 国产一区二区在线观看免费播放| 国产农村妇女精品一区二区| 美国黑人一级大黄| 日韩一区二区在线免费观看| av资源中文在线| 久久人人爽爽人人爽人人片av| 日韩精品亚洲专区| 午夜精品久久久久99蜜桃最新版| 日韩精品一区二区三区在线| 无遮挡爽大片在线观看视频 | 欧美videos极品另类| 91超碰rencao97精品| 在线视频观看日韩| 在线观看国产精品一区| 欧美一区永久视频免费观看| 91九色在线播放| 日韩精品资源| 国产精品性做久久久久久| 在线能看的av| 日韩中文字幕精品| 成人在线视频你懂的| 无码无遮挡又大又爽又黄的视频| 中文字幕一区免费在线观看| 天堂网在线播放| 国产日韩欧美91| 伊人久久大香线蕉综合热线| 免费成人深夜天涯网站| 精品国产伦一区二区三区观看方式| 男人最爱成人网| 黄色成人在线免费观看| 国产婷婷一区二区| 丰满肥臀噗嗤啊x99av| 国产精品一区二区三| 尹人成人综合网| 精品国产国产综合精品| 国产婷婷成人久久av免费高清|