介面自動化測試實戰之智慧場景如何攻破
智慧場景的意思就是怎麼樣才能讓介面自動化智慧化,讓使用介面框架的人越來越沒有要求,大街上隨便拉一個人來,一分鐘瞭解框架的使用,就能完美地去完成介面自動化測試。
1.找出公司要求我們測試的介面的共同點
假設有10個介面,每個介面的引數名不同但格式是相同的。我們就可以封裝一個生成入參的模板的函式,填寫初始引數執行,就能生成一個模板。
測試人員只要在模板中填寫測試用例了。那這些編寫測試用例的人員是不用學習計算機語言,框架思維的。在工作中使用得比較多的就資料驅動測試思維(DDT)。
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
from confg.loginconf import *
from pageobject.loginpage import *
from ddt import ddt,data,unpack
from common.read_excel import readexcels
#
# tc=[['login001','使用者名稱密碼為空的測試','','','1','使用者名稱不能為空!'],
# ['login002','驗證碼為空的測試','13800138006','123456','','驗證碼不能為空!'],
# ['login003','使用者名稱密碼不匹配的測試','13800138001','12345','1','賬號不存在!']]
#外部列表中的每個元素(內容列表)是一條測試用例
#從excel中獲得資料來源
dt=readexcels('../datacase/tpshop_login.xlsx')
@ddt
class tpshop_login_ddt(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.get(url_test)
def tearDown(self):
self.driver.quit()
@data(*dt) #每次轉一條測試用例進來,第一次的tc=['login001','使用者名稱密碼為空的測試','','','1','使用者名稱不能為空!']
def test_tpshop_login_not(self,cc):#設定一個變數來接收cc每次轉進來的測試用例
'''使用者名稱與密碼都為空'''
# 操作步驟
print(cc[0],cc[4], cc[5], cc[6],cc[7])
login_test(self.driver, cc[4],cc[5], cc[6])
# 斷言
sleep(2)
self.assertEqual(login_except_ec(self.driver),cc[7])
print('{}執行完成...'.format(cc[1]))
#logger.info('test_username_password_is_empty執行成功')
2.找出多介面之間關聯關係
單介面的自動化是比較簡單的。多介面關聯自動化就比較複習了多介面關聯的目的在於,模擬使用者真實操作行為,提前梳理該功能涉及的全部介面,包含前置業務介面、後置業務介面以及介面之間的依賴關係,透過將使用者行為涉及到的介面全部關聯在一起完成的自動化檢測,提前發現由於後端服務異常導致使用者功能使用異常的場景。
如果業務有做UI自動化檢測,那我們介面檢測的可與業務UI錯開來,提高檢測試效率,提早發現問題和提高工作質量。
介面關聯如何做到智慧化呢?
主要還是要對介面處理機會非常瞭解,提前發現介面與介面接關聯的演算法,才能有有效的應對措施。
例如禪道登入介面和新增產品。必需要登入成功後才能新增產品。新增產品又有很多個不同的測試用例,如果執一個新增產品的用例就要登入一下次那麼程式碼的執行效率就大的降低了。在UINTTEST框架中就可以把有的共同程式碼部分封裝起來,全部放入setupclass中.
import unittest
from selenium import webdriver
from pageobject.DS_reg import *
from common.mysql_s import opendb
from loguru import logger
import time
from common.try_fengzhuang import try_fz
url="
class DSmall_add_member(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver=webdriver.Chrome()
cls.driver.maximize_window()
cls.driver.get(url)
cls.driver.implicitly_wait(30)
DSmall_login(cls.driver)
@classmethod
def tearDownClass(cls):
cls.driver.quit()
def test_member_emptyinfo(self):
'''全部資訊為空測試'''
input_member_info(self.driver,'','','','','','')
try:
self.assertEqual(self.driver.find_element(By.ID,"member_name-error").text,'會員名不能為空')
self.assertEqual(self.driver.find_element(By.ID, "member_password-error").text, '密碼不能為空')
self.assertEqual(self.driver.find_element(By.ID, "member_email-error").text, '電子郵箱不能為空')
except Exception:
logger.info('執行失敗')
else:
logger.info('執行成功')
clear(self.driver)
介面測試過程中會遇到各種各樣的場景,實現起來也很有意思,但我們一定要會邊工作邊思考,把怎樣讓工作更智慧化,怎樣讓效率更高,貫穿整個工作過程。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70023145/viewspace-2925018/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 「乾貨」介面自動化實踐:高效智慧介面場景自動巡檢方案
- UI自動化測試實戰UI
- API自動化測試平臺,支援場景化的API測試API
- 介面自動化測試
- 介面自動化實戰之框架搭建框架
- 智慧座艙 自動化測試淺談之使用者場景下的語音互動系統測試
- 如何用Postman做介面自動化測試Postman
- Playwright自動化測試工具之元素定位實戰
- 如何實現介面異常場景測試?測試方法探索與測試工具實現
- postman實現介面的自動化測試Postman
- 介面自動化測試工程實踐分享
- 介面自動化測試系列之PHPUnit-GET請求介面測試方法PHP
- 試著使用 jmeter 實現介面自動化測試JMeter
- metersphere 介面自動化中sql場景使用SQL
- 測試開發之介面篇-使用K6完成介面自動化測試
- 如何實現高度自動化測試?
- python介面自動化測試之介面資料依賴Python
- 五大典型場景中的API自動化測試實踐API
- python 介面自動化測試Python
- 介面自動化測試框架 HttpFPT框架HTTP
- 二、介面自動化測試(2)
- protobuf 介面自動化測試摸索
- AutoRunner 功能自動化測試專案實訓之自動化測試原理(一)
- web自動化測試框架-03 介紹標籤,背景,場景,場景大綱Web框架
- 自動化測試進階課程——Selenium自動化測試通關實戰班
- Selenium 自動化測試從零實戰
- 如何制定介面自動化測試的覆蓋率?
- 【私有云場景案例分享③】批次回歸測試自動化流程
- 智慧裝置端與 APP 之間如何實現自動化測試 (藍芽 4.0)APP藍芽
- Django 介面自動化測試平臺Django
- 介面自動化測試解決方案
- 介面自動化測試 - RobotFramework RESTinstanceFrameworkREST
- 使用 testng 做介面自動化測試
- JMeter 介面自動化測試(手工轉自動化指令碼)JMeter指令碼
- 測試開發之自動化篇-自動化測試框架設計框架
- 企業業務場景如何實現自動化連線?
- 『居善地』介面測試 — 7、介面自動化測試框架的設計與實現框架
- 如何獲取自動化測試實戰經驗