程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Python自動化測試23】接口自動化測試實戰三_動態參數化與數據偽造

編輯:Python

文章目錄

  • 一、前言
  • 二、動態參數化
  • 三、數據偽造

一、前言

本文章主要會講解接口測試中用例設計的動態參數化形式,除此之外下方有系列文章的傳送門,還在持續更新中,感興趣的小伙伴也可以前往查看,話不多說,讓我們一起看看吧~

系列文章:
系列文章1:【Python自動化測試1】遇見Python之美
系列文章2:【Python自動化測試2】Python安裝配置及PyCharm基本使用
系列文章3:【Python自動化測試3】初識數據類型與基礎語法
系列文章4:【Python自動化測試4】字符串知識總結
系列文章5:【Python自動化測試5】列表與元組知識總結
系列文章6:【Python自動化測試6】字典與集合知識總結
系列文章7:【Python自動化測試7】數據運算符知識合集
系列文章8:【Python自動化測試8】流程控制語句講解
系列文章9:【Python自動化測試9】函數知識合集
系列文章10:【Python自動化測試10】文件基礎操作
系列文章11:【Python自動化測試11】模塊、包與路徑知識合集
系列文章12:【Python自動化測試12】異常處理機制知識合集
系列文章13:【Python自動化測試13】類、對象、屬性與方法知識合集
系列文章14:【Python自動化測試14】Python自動化測試基礎與進階練習題
系列文章15:【Python自動化測試15】unittest測試框架的核心概念與作用
系列文章16:【Python自動化測試16】測試用例數據分離
系列文章17:【Python自動化測試17】openpyxl二次封裝與數據驅動
系列文章18:【Python自動化測試18】配置文件解析與實際應用
系列文章19:【Python自動化測試19】日志系統logging講解
系列文章20:【Python自動化測試20】接口自動化測試框架模型搭建
系列文章21:【Python自動化測試21】接口自動化測試實戰一_接口概念、項目簡介及測試流程問答
系列文章22:【Python自動化測試22】接口自動化測試實戰二_接口框架修改及用例優化

二、動態參數化

舉個例子,我們在設計一個注冊接口測試用例的時候,會碰到一個明顯的瓶頸,該手機號是未進行注冊的,在第一次執行自動化測試用例時能夠成功的完成注冊,但在第二次再次執行測試用例時會發現,手機號已存在,那麼二次執行該測試用例就會執行失敗,而面對這種情況,有以下幾個解決思路:

""" 解決思路: 1、每一次通過手動的方式打開excel刪除後重新輸入一個新的手機號 2、在數據庫中查詢該手機號,如果該手機號已存在,那麼在數據庫進行手機號刪除 3、在現有的手機號上的最末尾數+1 4、隨機生成一個手機號 思路分析: 1、第一種方式雖然能夠解決,但每一次執行時都需要人工手動的去替換,不便於維護 2、雖然能查詢並刪除手機號,但往往真實的項目不會輕易的做數據庫刪除操作,並且一個已注冊手機號會有表關聯,且大多數情況下測試無權限進行刪除 3、這也是一個解決方式,我們可以在第11位數字上,每次都+1,弊端是終究會碰到可能會和其他手機號相沖突的號碼從而執行失敗,但效率遠高於1和2 4、最後的方式也是動態參數化,在需要替換的數據上做標記,當循環遍歷到這個標記時使用隨機生成的號碼替換這個標記,以在執行用例時能夠順利通過 """

動態參數化就是為了解決這一類的問題,讓手機號持續性的隨機變更,讓每一次的執行都不會因為手機號的重復而導致用例失敗(使用動態參數化仍然可能會隨機到已注冊的號碼,但概率極低),而隨機生成某一個手機號碼就需要用到數據偽造

三、數據偽造

在自動化測試領域中數據偽造並非是什麼破壞系統安全的事情,而是希望能夠自動化生成測試用例的數據且數據符合一定的規則,例如手機號,電子郵箱等等。數據偽造安可以用在自動化注冊模塊,也可以用於登錄或其他文本輸入框來檢測一定的輸入規則等。

在Python中進行數據偽造庫 – faker庫,通過pip先進行安裝後即可:

import faker
# 初始化faker對象,指定生成規則區域為中國
fk = faker.Faker(locale="zh_CN")
result = fk.phone_number()
print(f"手機號:{
result}")
# 隨機生成一個地址
company = fk.company()
print(f"地址:{
company}")
# 隨機生成一個公司
address = fk.address()
print(f"公司:{
address}")
# 隨機生成一個城市
city = fk.city()
print(f"城市:{
city}")

除了標准的偽造庫能夠提供偽造外,我們也可以使用自己期望的方式來制定一個規則:

def generate_new_phone():
phone = "1" + random.choice(["3", "5", "7", "8", "9"])
for i in range(9):
num = random.randint(0, 9)
phone += str(num)
return phone
print(f"函數式手機號:{
generate_new_phone()}")

簡易的封裝偽造庫函數,如果你是在框架中寫數據偽造的代碼,那麼可以放在common中,從common中在導入以此來生成一些數據:

import faker
def generate_new_phone():
fk = faker.Faker(locale="zh_CN")
result = fk.phone_number()
return result
# 改動後的片段代碼(如對片段代碼有疑問,請參考前置文章):
@ddt
class TestLogin(unittest.TestCase):
@list_data(data)
def test_login_success(self, case_data):
json_data = case_data["json"]
if "#new_phone#" in json_data:
new_phone = data_forgery.generate_new_phone()
json_data = json_data.replace("#new_phone", new_phone)


好啦~以上就是本次文章分享的全部內容啦,你學會了嗎?希望能給大家帶來幫助哦!



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved