1. 程式人生 > 其它 >單元測試框架(二)

單元測試框架(二)

# !/usr/bin/env python
# -*- coding:utf-8 -*-
'''
Java的繼承與Python的繼承有什麼區別
    Java:物件在呼叫父類中方法時,該方法呼叫的方法會優先使用子類的方法,呼叫的成員變數會優先呼叫父類的變數。
    Java:因為涉及到變數屬性的問題,必須對物件進行降級和轉換才能使用子類的方法和屬性。
    python:物件在呼叫父類中方法時,呼叫的方法和變數都優先呼叫子類的方法和變數。
    python:天生多型

如果子類重寫了父類的方法,那麼例項化子類後,呼叫重寫後的方法,呼叫的是子類的方法還是父類的方法
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def show(self):
        print('name is {0},age is {1}'.format(self.name, self.age))


class Work(Person):
    def __init__(self, name, age, salary):
        # super()的方法繼承父類的例項屬性
        # super().__init__(name, age)
        Person.__init__(self, name, age)
        self.salary = salary

    def show(self):
        print('name is {0},age is {1},salary {2}'.format(self.name, self.age, self.salary))


objPerson = Work(name='admin', age=19, salary=1000.1)
objPerson.show()
    優先呼叫子類方法

UI自動化測試:
常用的元素定位有那幾種方法,請舉例說明
在element加s為多種元素定位方法。
一般用於以下場景:
(1)批量操作物件,比如將頁面上所有的複選框都被勾選。
(2)先獲取一組物件,再在這組物件中過濾出需要具體定位的一些物件。
    id | find_element_by_id()
    name | find_element_by_name()
    class name | find_element_by_class_name()
    tag name | find_element_by_tag_name()
    link text | find_element_by_link_text()
    partial link text | find_element_by_partial_link_text()
    xpath | find_element_by_xpath()
    css selector | find_element_by_css_selector()

單個元素定位與多個元素定位的區別是什麼?
    單個元素標籤用於定位單個元素
    多個元素定位用於定位一組元素

如果是iFrame的框架,如何來定位裡面的元素屬性的物件
    先進入對應frame框架再定位元素
    frame框架一般通過ID、NAME、索引形式

怎麼理解面向物件設計模式
    建立可以跨多個測試用例的共享程式碼
    減少重複程式碼
    減少維護成本

怎麼理解顯式等待和隱式等待
    顯示等待:定義了等待條件,只有該條件觸發,才執行後續程式碼。
    隱式等待:嘗試發現某個元素的時,如果沒立刻發現,就等待固定長度的時間。

在測試中遇到多視窗,具體怎麼解決,請描述具體的步驟和編寫具體的案例程式碼
    對A視窗控制代碼賦值給一個變數
        nowHandler=self.driver.current_window_handle
    對B視窗控制代碼賦值給一個變數
        allHandlers=self.driver.window_handles
    對視窗控制代碼進行對比迴圈到新視窗
        for handler in allHandlers:
            if nowHandler!=handler:
            self.driver.switch_to.window(handler)
    判斷視窗是否為預期視窗
            self.assertEqual(self.driver.title,'QQ註冊')

單元測試框架:
unittest的常用元件有哪些
test fixture:初始化和清理測試環境
    setUp()和setDown(),
    setUpclass()和setDownclass()最常用的方法
test case:單元測試用例
    TestCase是編寫單元測試用例最常用的類
test suite:單元測試用例的集合
    TestSuite 是最常用的類
test runner:執行單元測試
test report:生成測試報告

unittest中怎麼理解測試韌體
    測試韌體是執行測試時的準備工作和收尾工作,測試環境初始化和關閉,資料進行還原操作

怎麼理解兩種測試韌體的區別的測試
    setUp()、setDown()用例類
        開啟瀏覽器輸入對應網址這些操作
        給資料還原,這就是執行用例的後置條件。
        對每個用例執行
    setUpclass()和setDownclass()測試類
        開啟瀏覽器輸入對應網址這些操作
        給資料還原,這就是執行用例的後置條件。
        對整個測試類執行一次

在unittest測試框架中,載入所有的測試模組使用到的方法是什麼?具體引數是什麼?
    import unittest
    引入unittest庫
    unittest.TestLoader().discover
    獲取被執行的測試套件

在unittest中使用那個庫來生成對應的測試報告
    引入import HTMLTestRunner.py生成

一個完整的測試用例包含哪些步驟
    測試需求 --> 分析需求 --> 編寫用例 --> 劃分用例的優先順序

怎麼理解引數化
    @parameterized.expand([
        param('', '', ''),
        param('', '', ''),
    ])
    測試進行相同的步驟輸入的資料不的

測試按階段劃分,主要分為那幾個階段
    單元測試,整合測試,系統測試,驗收測試

怎麼理解等價類和邊界值
    等價類可分為有效等價類、⽆效等價類,是常⽤的⿊盒測試⽤例設計⽅法。
    邊界值分析法是作為對等價類劃分法的補充,其測試⽤例來⾃等價類的邊界。針對某一事物設計他的測試用例

請描述一個完整的測試流程
PRD產品需求文件(互動,邏輯)
    PRD評審
    研發(寫程式碼技術檔案,寫程式碼)
    測試(寫計劃,寫方案,寫測試用例)
    轉測試(冒煙測試,完成,上線)
    開始測試

'''