UI自動化測試框架

2022-09-06 17:21:07 字數 3749 閱讀 7177

python+selenium+unittest+ddt+htmlreport分布式資料驅動自動化測試框架結構

1、business:公共業務模組,如登入模組,可以把登入模組進行封裝供呼叫

------login_business.py

from page_object.common_page.login_page import login_page

from htmlreport import logger

import time

def login(driver, username, password):

"""登入業務

:param driver:瀏覽器驅動

:param username:使用者名稱

:param password:密碼

:return:none

"""logger().info(f"使用使用者名稱:,密碼:進行登陸")

login_page = login_page(driver)

login_page.send_username(username)

login_page.send_password(password)

login_page.submit()

time.sleep(2)

2、common:與業務無關的公共模組,如對selenium的二次封裝,方便後期的呼叫,還有一些工具類,如在讀取資料時需要對讀取檔案進行封裝

3、pageobject:這個就應該不用多說了,頁面元素的封裝,這個根據自己公司系統的業務去做分層封裝(不做過多解釋)

4、report:測試報告

5、testcase:測試用例層,下面以logincase為例子

---logincase.py

import unittest

from business.base_url import url_index

import ddt

from common.tools.read_txt import read_txt

from htmlreport import logger

from page_object.common_page.index_page import index_page

from common.selenium_library import seleniumbase

from business.login_business import login

@ddt.ddt

class test_login(unittest.testcase):

def setup(self):

self.driver = seleniumbase().get_web_driver()

def teardown(self):

seleniumbase(self.driver).quit()

@ddt.unpack

@ddt.data(*read_txt('testdata/login_user_password.txt'))

def test_login(self, username, password, assert_type):

se = seleniumbase(self.driver)

se.get(url_index)

login(self.driver, username, password)

se.add_page_screen_shot()

if assert_type == '1':

logger().info("斷言登陸成功")

text = index_page(self.driver).login_success()

self.assertin("測試", text, '登陸成功斷言')

elif assert_type == "2":

text = self.driver.find_element_by_id("submit").text

self.assertin("立即登入", text, '登陸失敗斷言')

elif assert_type == "3":

text = self.driver.find_element_by_id("submit").text

self.assertin("立即登入", text, '登陸失敗斷言')

elif assert_type == "4":

text = self.driver.find_element_by_id("submit").text

self.assertin("立即登入", text, '登陸失敗斷言')

else:

logger().info(f"未知斷言型別")

self.asserttrue(false, "未知斷言型別")

6、testdata:測試資料,對應用例的資料都是在這裡去取

7、testsuite:測試套件,以登入套件為例

---loginsuite.py

import unittest

from testcase.logincase import login_case

def return_suite():

suite=unittest.testsuite()

loader=unittest.testloader()

suite.addtests(loader.loadtestsfromtestcase(login_case.test_login))

return suite

8、browser.ini:瀏覽器配置檔案

[local]

local_browser = false

wait_time = 10

[browser]

name = chrome

;name = firefox

;name = ie

window_width =

window_height =

[grid]

command_executor =

headless = false

proxy =

9、run.py:整體執行檔案

import unittest

from testsuite.linessuite import lines_suite

from testsuite.linessuite import itinerary_suite

import htmlreport

suite = unittest.testsuite()

# suite.addtests(login_suite.return_suite())

suite.addtests(lines_suite.return_suite())

suite.addtests(itinerary_suite.return_suite())

htmlreport.testrunner(

report_file_name="test",

title='web ui 自動化',

description='登陸',

thread_count=3

).run(suite)

10、整體框架結構圖:

UI自動化測試隨筆

昨天給開發的同事講我們正在做的自動化測試,同事問了句 為什麼api的測試不需要寫 了,而ui的測試還需要寫那麼多 呢?能不寫 麼?目前我們的自動化測試的現狀 目前主要覆蓋兩個部分 api的測試和ui的測試。對於api的測試經過框架的封裝,基本上只需要編寫乙個xml描述的test case就可以了,x...

自動化測試框架

可設計為五層 一 測試用例層 主要存放用例的指令碼,分為主指令碼和子指令碼。主指令碼用來控制各個子指令碼,實現指令碼間的資料傳遞。子指令碼是實現各個功能點的指令碼,同時也會提取出一些共用的方法,一般放在提取層中。主指令碼中可使用資料驅動來控制指令碼實現各種場景的流程,如silktest的test s...

UI自動化測試 介面測試等自動化測試策略

今天跟大家介紹ui測試 介面測試 單元測試主要內容,以及每種測試花費時間討論。ui測試 selenium ui測試是最接近軟體真實使用者使用行為的測試型別。通常是模擬真實使用者使用軟體的行為,即模擬使用者在軟體介面上的各種操作,並驗證這些操作對應的結果是否正確。介面測試 api測試 api測試,主要...