theme: fancy
highlight: arta
項目介紹
接口自動化測試項目2.0
軟件架構(gòu)
本框架主要是基于 Python + unittest + ddt + HTMLTestRunner + log + excel + mysql + 企業(yè)微信通知 + Jenkins 實現(xiàn)的接口自動化框架。
- 項目參與者: 陳勇志
- 技術(shù)支持郵箱: 262667641@qq.com
- 個人微信: Testing_player
- 個人博客地址: https://home.cnblogs.com/u/Nephalem-262667641
- 微信公眾號:測試玩家勇哥
前言
公司突然要求你做自動化,但是沒有代碼基礎(chǔ)不知道怎么做?或者有自動化基礎(chǔ),但是不知道如何系統(tǒng)性的做自動化,
放在 excel 文件中維護(hù),不知道如何處理多業(yè)務(wù)依賴的邏輯,又或者你想想postman一樣可以給每一條測試用例編寫一些代碼來處理腳本,但是又不知道怎么做。
那么 gitee 中勇哥的自動化測試框架,將為你解決這些問題。
框架優(yōu)勢
本框架不收取汾河費用,其優(yōu)勢在于測試人員直接編寫測試用例,運行一個測試文件就可以自動執(zhí)行所有測試用例。
框架主要使用 python 語言編寫,結(jié)合 unittest 進(jìn)行二次開發(fā),用戶僅需要在 excel 文件中編寫測試用例,
編寫成功之后,會自動生成測試用例的代碼,零基礎(chǔ)代碼小白,也可以操作。
本框架支持多環(huán)境切換,多業(yè)務(wù)接口依賴,mysql 數(shù)據(jù)庫斷言和 接口響應(yīng)斷言,并且用例直接在 excel 文件中維護(hù),無需編寫業(yè)務(wù)代碼,
本框架支持動態(tài)腳本函數(shù)擴(kuò)展,可以隨時內(nèi)部預(yù)置函數(shù),或者增加動態(tài)腳本,通過固定格式寫法 {{fun()}} 動態(tài)調(diào)用
接口 unittest 框架生成 HTML 報告及 excel 用例執(zhí)行報告,并且發(fā)送 企業(yè)微信通知/ 釘釘通知/ 郵箱通知/ 飛書通知,靈活配置。
實現(xiàn)功能
- 測試數(shù)據(jù)隔離, 實現(xiàn)數(shù)據(jù)驅(qū)動。
- 支持多套環(huán)境使用,比如測試用例相同,但是環(huán)境不同,只需在 excel 中啟用需要執(zhí)行的環(huán)境即可。
- 支持多接口數(shù)據(jù)依賴: 如A接口需要同時依賴 B、C 接口的響應(yīng)數(shù)據(jù)作為參數(shù),或者 c 接口斷言需要動態(tài)使用A接口的入?yún)⒆鳛轭A(yù)期結(jié)果。
- 數(shù)據(jù)庫斷言: 直接在測試用例中寫入查詢的 sql 即可斷言,無需編寫代碼。
- 動態(tài)多斷言: 如接口需要同時校驗響應(yīng)數(shù)據(jù)和 sql 校驗,支持多場景斷言。
- 支持自定義腳本代碼(python語言),可以讓你像 postman 一樣給每一條測試用例編寫任意前后置腳本代碼,內(nèi)置了 action
對象操作及一些方法可以很便捷的處理前置或后置腳本。 - 自動生成用例代碼: 測試人員在 excel 文件中填寫好測試用例, 程序可以直接生成用例代碼,純小白也能使用。
- 支持自定義拓展函數(shù): 如用例中需要使用自己實現(xiàn)的函數(shù),可以隨時在指定的目錄下面寫上函數(shù),通過 {{func(*args,**kwargs)}}
隨時調(diào)用你自己設(shè)置的函數(shù)。 - 內(nèi)置實現(xiàn)了一部分隨意函數(shù)及自定義常用函數(shù):如:隨機(jī)字符串、任意日期時間、隨機(jī)gps、隨機(jī)用戶身份證、地址、郵箱、企業(yè)信息等等,用戶還可以自己定義任意函數(shù),無門檻使用。
- 統(tǒng)計接口的運行時長: 拓展功能,訂制開關(guān),可以決定是否需要使用。
- 支持用例定時器運行,比如:B用例執(zhí)行前需要A用例執(zhí)行后等待5秒才開始執(zhí)行,可以隨意加上等待時間。
- 日志模塊: 打印每個接口的日志信息,同樣訂制了開關(guān),可以決定是否需要打印日志。
- 釘釘、企業(yè)微信通知、郵件通知: 支持多種通知場景,執(zhí)行成功之后,可選擇發(fā)送釘釘、或者企業(yè)微信、郵箱通知。
- 封裝了發(fā)送MQTT的類,支持發(fā)送MQTT消息。
- 支持導(dǎo)入postman或者swargs導(dǎo)出的json文件自動處理成測試用例,然后修改一下參數(shù)即可使用。
gitee 地址
接口自動化框架地址:入群自?。何⑿牛篢esting_player
遇到問題
- 請仔細(xì)閱讀文檔,文檔中幾乎可以幫你避免所有的問題
- 可以添加微信: blue-blue-lemon, 添加微信會將你拉倒自動化交流群中,群內(nèi)有很多熱心的小伙伴,但是前提是希望你已經(jīng)閱讀了文檔中的所有內(nèi)容
- 你也可以請作者為你解答,當(dāng)然在我時間空閑的時候,也可以讓作者為你一對一服務(wù),當(dāng)然是收費的。
目錄概覽:
詳細(xì)目錄結(jié)構(gòu)
.
└── cases/ // 測試用例數(shù)據(jù)文件夾
└── cases/ // 測試用例
└── test_cases.xlsx
└── templates/ // 測試用例模板
└── template.xlsx
└── temporary_file/ // swagger| postman 導(dǎo)出的 json文件存放位置
└── openapi.json
└── postman.json
└── common/ // 配置及核心功能代碼
└── bif_functions/ // 內(nèi)置函數(shù)工具
└── __init__.py
└── bif_datetime.py // 內(nèi)置日期時間函數(shù)
└── bif_hashlib.py // 內(nèi)置hash 函數(shù)
└── bif_json.py // 內(nèi)置json解析函數(shù)
└── bif_list.py // 內(nèi)置列表操作函數(shù)
└── bif_random.py // 內(nèi)置隨機(jī)函數(shù)
└── bif_re.py // 內(nèi)置正則函數(shù)
└── bif_str.py // 內(nèi)置字符串函數(shù)
└── bif_time.py // 內(nèi)置時間函數(shù)
└── random_tools.py // 內(nèi)置其他隨機(jī)函數(shù)
└── crypto/ // 加密工具
└── __init__.py
└── encrypt_data.py // 執(zhí)行數(shù)據(jù)加密封裝入口
└── encryption_aes.py // aes 加密
└── encryption_base64_to_image.py // base64 轉(zhuǎn)圖片工具
└── encryption_main.py // 執(zhí)行加入函數(shù)入口,對應(yīng)excel中的加密方法選項,結(jié)合 extensions 中的 sign 可自定義加密規(guī)則
└── encryption_rsa.py // rsa 加密
└── encryption_str.py // 常用的字符串加密工具函數(shù)
└── data_extraction/ // 數(shù)據(jù)提取器
└── __init__.py
└── analysis_json.py // json 字典分析函數(shù),類似 jsonpath
└── assert_dict.py // 舊斷言字段函數(shù) (暫時舍棄)
└── data_extractor.py // 數(shù)據(jù)提取函數(shù)
└── dependent_parameter.py // 數(shù)據(jù)替換函數(shù)
└── dict_get.py // 舊路徑提取函數(shù)
└── database/ // 數(shù)據(jù)庫操作工具
└── __init__.py
└── execute_sql_files.py // sql 批處理工具
└── mongodb_client.py // mongoDB 操作工具
└── mysql_client.py // mysql 操作工具
└── psycopg_client.py // presto 操作工具
└── redis_client.py // redis 操作工具
└── file_handling/ // 文件操作
└── __init__.py
└── do_excel.py // excel 處理
└── excel.py // excel 處理
└── file_utils.py // json、yarm等文件操作以及一些目錄操作
└── http_client/ // http_client 發(fā)送http的工具
└── __init__.py
└── http_client.py // http 請求封裝
└── MQclient/ // MQ 工具
└── __init__.py
└── mqtt_client.py // mqtt 工具
└── rabbit_mq_client.py // rmq 工具
└── random_tools/ // 常用隨機(jī)數(shù)工具包
└── credit_cards/ // 隨機(jī)銀行卡
└── __init__.py
└── bankcard.py
└── cardbin.csv
└── credit_identifiers/ // 隨機(jī)企業(yè)唯一信用代碼
└── __init__.py
└── address.json
└── credit_identifier.py
└── unified_social_credit_identifier.py
└── emails/ // 隨機(jī)郵箱
└── __init__.py
└── email.py
└── free_email.csv
└── identification/ // 隨機(jī)身份證
└── __init__.py
└── area.csv
└── id_card.py
└── names/ // 隨機(jī)姓名
└── __init__.py
└── first_name_boy.csv
└── first_name_girl.csv
└── last_name.csv
└── name.py
└── phone_numbers/ // 隨機(jī)手機(jī)號
└── __init__.py
└── phone.py
└── phone_area.csv
└── __init__.py
└── utils/ // 工具包
└── __init__.py
└── captcha.py // 識別圖片轉(zhuǎn)字符串,常用于驗證碼登錄
└── load_and_execute_script.py // 動態(tài)加載自定義python文件工具
└── logger.py // loggin 日志封裝
└── mylogger.py // loguru 日志封裝
└── parsing_openapi.py // 解析 swagger 文件 轉(zhuǎn)測試用例
└── parsing_postman.py // 解析 postman 文件 轉(zhuǎn)測試用例
└── singleton.py // 單例
└── WxworkSms.py // 企業(yè)微信
└── validation/ // 斷言及加載動條函數(shù)工具包
└── __init__.py
└── comparator_dict.py // 自定義比較器名詞釋義
└── comparators.py // 自定義比較器
└── extractor.py // 提取器
└── load_modules_from_folder.py // 動態(tài)從模塊中加載函數(shù)
└── loaders.py // 動態(tài)加載函數(shù)及加載內(nèi)置比較器等工具包
└── validator.py // 斷言校驗器
└── __init__.py
└── action.py // 核心類
└── config.py // 配置文件
└── variables.py // 數(shù)據(jù)操作類
└── extensions/ // 動態(tài)擴(kuò)展模塊目錄
└── __init__.py
└── ext_method_online.py // 動態(tài)擴(kuò)展方法模塊
└── sign.py // 加簽?zāi)K
└── image/
└── wx.jpg
└── zfb.jpg
└── OutPut/ // 日志報錯
└── log/
└── 2023-06-25.log
└── 2023-07-04.log
└── 2023-07-05.log
└── reports/
└── history.json
└── scripts/ // 動態(tài)腳本目錄
└── __init__.py
└── prepost_script_安全純凈大屏_2.py // 對應(yīng)每條測試用例的前后置腳本(可選)
└── request_script_sheetname_id.py
└── test_script/ // 測試腳本核心模塊
└── __init__.py
└── test_api.py
└── directory_tree.txt
└── excel_converter.py // postman、swagger 文件轉(zhuǎn)換主入口模塊
└── generate_tree.py // 項目目錄樹模塊
└── main_personal_information.py // 隨機(jī)個人信息核心入口
└── pipenv_command.text
└── Pipfile
└── Pipfile.lock
└── README.md
└── run.py // 自動化測試執(zhí)行入口模塊
安裝教程
依賴庫
參考 pipenv --Pipfile 虛擬環(huán)境文件,不一一列出
首先,執(zhí)行本框架之后,需要搭建好 python 環(huán)境,python 環(huán)境搭建自行百度
- 安裝 pipenv環(huán)境: pip install pipenv
- 創(chuàng)建虛擬環(huán)境: pipenv install
- 如果有個別包無法安裝,則:pipenv shell 進(jìn)入環(huán)境后,再pipenv install XX包
使用說明
- 測試用例只需要在 cases/cases/xxx.xlsx 文件填寫測試用例即可,可以參考測試用例模板文件,由于模板文件的用例已經(jīng)做了敏感信息處理,所以執(zhí)行執(zhí)行模板的用例應(yīng)該會報錯
- 運行用例可以直接進(jìn)入到 test_script/test_xxx.py 中,執(zhí)行test_xxx.py文件,也可以直接運訓(xùn) 最外層的 run.py文件,
- Personalinformation.py 這個文件是用來生成一些測試數(shù)據(jù),方便做功能測試或者其他一般性測試使用
開放測試接口文檔
大家可以使用開源接口中的登錄、個人信息、收藏(新增、查看、修改、刪除)等功能,編寫接口自動化案例,然后測試程序腳本
下方是接口文檔地址,大家可以自行查看(因為開源的接口,里面有些邏輯性的功能,如修改被刪除的網(wǎng)址接口并沒有過多的做判斷,
因此用例中只寫了一些基礎(chǔ)的場景,僅供大家參考。)
- https://wanandroid.com/blog/show/2
如何創(chuàng)建用例
excel中的測試用例相關(guān)字段介紹
下面是一個關(guān)于一個用例中的所有字段,字段不是全部必填
下面對每一個字段的作用,做出解釋:
- Id:測試用例的id,唯一,必填
- Name: 測試用例的名稱,必填
- Description: 測試用例描述,可選,建議填寫,生成的報告會用到這個字段
- Run: 是否運行這條用例,如果不填或填寫的不是
YES/yes
,則不運行這條用例 - Time: 定時器,數(shù)字,非必填,填寫則會等待多少秒后運行這條用例
- Method: 請求方法,支持所有的http請求方法,
get/post/put/patch
等等 - Url: 接口路徑或者整個請求地址,如果不帶域名,則會自動去init表中拼接host上去,Url中可以參數(shù)化,如:
/test/api/get/{{id}}/{{func(*args,**kwargs)}}
- Headers: 請求頭,字典填寫方式,如:
{"Content-Type":"application/json","token":"{{token}}",'time':'{{timestamp()}}'}
- Headers Crypto: 請求頭是否加密,可以自定義加密方式,然后這里輸入你的加密方法名即可,如
MD5\sha1
等 - Query Str: 查詢字符串參數(shù),也就是URL過長的時候,可以將URL后面的參數(shù)拆出來填寫在這里,字典的方式填寫,支持參數(shù)化
- Request Data Type: 請求參數(shù)類型,有
json,file,params,data
等等這幾種 - Request Data: 請求參數(shù),字典形式填寫,支持參數(shù)化,如:
{"projectId":"{{projectId}}","tvSequence":"{{random_string()}}"}
- Setup Script: 前置腳本,可以直接寫 pthon 代碼,比如類,函數(shù),等等,如果是函數(shù),類一定要調(diào)用才會執(zhí)行。編寫方式示例:
# 可以寫類,可以寫函數(shù),可以直接普通python語句,
def setup(action):
print("獲取action示例的屬性", action.get_vars())
# 更新屬性到action實例的屬性中
action.update_vars("999", "99999")
print("獲取所有的臨時變量", action.get_variable())
print("將變量存到臨時變量表中以便后續(xù)用例{{key}}使用", action.update_variable("key", "value"))
print("將函數(shù)存到臨時變量表,以便后面調(diào)用{{setup_func()}}也可以", action.update_variable("setup_func", setup))
# 調(diào)用方法
setup(action)
- Request Data Crypto: 請求參數(shù)是否加密,可以填寫你需要的加密方式,如
MD5\sha1
等 - Extract Request Data:提取請求參數(shù)的字段或整個請求參數(shù)字典,如:
{"k": "$.projectId", "x": "$.data[0].age[3].a"}
- Jsonpath: 提取響應(yīng)結(jié)果的 jsonpath 表達(dá)式,示例:默認(rèn)情況下若表達(dá)式結(jié)果只有一個值那么就存為字符串,如果表達(dá)式執(zhí)行結(jié)果有多個值,那么就存為列表,表達(dá)式填寫方式如下:
{"k": "$.data", "x": "$.data[0].age[3].a"}
- Regex: 正則表達(dá)式,填寫正則表達(dá)式字符串,示例:
r'"id": (\d+), "name": "(\w+)",'
- Regex Params List:填寫一個列表(list),用來存正則表達(dá)式提取值的變量列表,如:
["a", "b"]
,則表示用a,b 變量接收上面的正則表達(dá)式的返回值 - Retrieve Value:python字典的取值方式,多條用分號間隔,如:
name=data[0].name;ok=data[0].id;an=data[0].age[3].a
- SQL:填寫增刪改查sql語句,字典的key是需要執(zhí)行的sql方法,值是sql語句,可以填寫多條,填寫格式示例:
{
"insert": {
"insert_data": "INSERT INTO users (name, age, email) VALUES ('John', 25, 'john@example.com');"
},
"select": {
"select_data": "SELECT name, age, email FROM users WHERE age > 20;"
},
"delete": {
"delete_data": "DELETE FROM users WHERE age > 30;"
},
"update": {
"update_data": "UPDATE users SET age = 26 WHERE name = 'John';"
}
}
- Sql Params Dict:提取sql的結(jié)果,同jsonpath,如:
{"name": "$.select.select_data.name", "age": "$.select.select_data.age"}
- Teardown Script: 后置python腳本代碼,任意函數(shù)或者類,用例發(fā)送請求后會自動執(zhí)行該代碼
- Expected:預(yù)期結(jié)果,寫法示例:
[{"check":"result.user.name","comparator":"eq","expect":"chenyongzhi"}]
or{"check":"result.user.name","comparator":"eq","expect":"chenyongzhi"}
,支持的斷言比較方式有如下這些:
{
"eq": "eq:實際值與期望值相等",
"lt": "lt:實際值小于期望值",
"lte": "lte:實際值小于或等于期望值",
"gt": "gt:實際值大于期望值",
"gte": "gte:實際值大于或等于期望值",
"neq": "neq:實際值與期望值不相等",
"str_eq": "str_eq:字符串實際值與期望值相同",
"length_eq": "length_eq:實際值的長度等于期望長度",
"length_gt": "length_gt:實際值的長度大于期望長度",
"length_gte": "length_gte:實際值的長度大于或等于期望長度",
"length_lt": "length_lt:實際值的長度小于期望長度",
"length_lte": "length_lte:實際值的長度小于或等于期望長度",
"contains": "contains:期望值包含在實際值中",
"contained_by": "contained_by:實際值被包含在期望值中",
"type_match": "type_match:實際值的類型與期望值的類型相匹配",
"regex_match": "type_match:正則匹配(從字符串的起始位置匹配)",
"regex_search": "regex_search:正則匹配(從字符串的任意位置匹配)",
"startswith": "startswith:實際值是以期望值開始",
"endswith": "endswith:實際值是以期望值結(jié)束"
}
- Response: 響應(yīng)結(jié)果,用例執(zhí)行后,會自動將結(jié)果回寫到這個excel中,查看測試結(jié)果,一目了然。
創(chuàng)建用例步驟
開始填寫測試用例前,先看看這個init表的字段,下面我會統(tǒng)一講解:
- 在
cases
文件夾下方創(chuàng)建被測模塊或者系統(tǒng),然后在系統(tǒng)下創(chuàng)建相關(guān)的excel
用例(可以復(fù)制模板excel文件來填寫測試用例) - 將測試用例路徑添加到
common
文件夾下的config.py
文件中 - 進(jìn)入
test_script/
文件夾,在該文件夾下操作test_api.py
文件將test_file
變量地址替換為剛剛填寫的測試用例地址 - excel 中的用例必須填寫用例
id
,另外init sheet
表照中的全局初始化數(shù)據(jù)字段 中的部分字段必須填寫如:
"""
# init 表中的字段
id: 序號
environment: 被測環(huán)境,建議填寫:如測試環(huán)境,開發(fā)環(huán)境,生產(chǎn)環(huán)境等等
host:域名地址,如:https://www.baidu.com,非必填,填寫了就會取這部分的地址與測試用例中的Url拼接發(fā)送請求
path:一小部分的請求路徑,比如所有的接口可能都存在:/test/api 這種,就可以填寫上去,非必填
databases: 數(shù)據(jù)庫,非必填,{"host": "127.0.0.1","port": 3306,"database": "mysql","user":"root","password":"root@3306"}
sheets:你想執(zhí)行的sheet是哪一個,全部執(zhí)行就填寫 'all',部分執(zhí)行就填寫具體的sheet如["第一個sheet的名稱","第二個sheet的名稱"...]
initialize_data:初始化的一些固定參數(shù),比如登錄賬號,密碼,等等都是基本不變的數(shù)據(jù)可以填寫這里,屬于全局變量,填寫方式字典{"{{username}}":"1234","{{pwd}}":"密碼"}
run: 決定使用的環(huán)境,值為yes表示用這個環(huán)境運行,有多個環(huán)境都填寫yes,只運行第一個yes
"""
以上都填寫完成,記得先關(guān)閉 excel
,然后就可以單獨執(zhí)行 test_api.py
文件,或者直接運行 run.py
主入口文件,生成HTML報告及excel測試報告
下面我們來看一下,如何創(chuàng)建用例
用例中相關(guān)字段的介紹
- 下發(fā)截圖為 init 初始化基礎(chǔ)數(shù)據(jù)填寫用例
- init 中 sheets 內(nèi)的列表排序是有作用的,執(zhí)行用例是按照列表內(nèi)值排序執(zhí)行的。
- 下方截圖就是 excel 用例 每個字段是否必填的描述
- 每條測試用例都可以自定義是否開啟,開啟則執(zhí)行,不開啟則跳過,默認(rèn)執(zhí)行結(jié)果是通過
- 每一個sheet都可以隨意組合用例,不同sheet之間的變量參數(shù)可以共用(即變量全局的),不獨立設(shè)計,主要是考慮到分sheet只是為了方面管理用例,但是執(zhí)行依然是一次性全部執(zhí)行
- 目前沒有設(shè)計每一個sheet的最大用例條數(shù),默認(rèn)取excel最大數(shù)據(jù)量,如果發(fā)現(xiàn)最大數(shù)據(jù)量撐爆內(nèi)存,建議分多個excel來寫測試用例
- 目前使用的生成器的方式讀取excel,主要是防止一次性內(nèi)存被撐爆
- 測試報告是按照excel來生成的,測試報告的樣式?jīng)]有按模塊區(qū)分,實際上直接打開excel就可以看到報告結(jié)果了。
- 其他一些沒有多大作用的,通過率,跳過條數(shù),通過條數(shù),失敗條數(shù)等,沒有另外處理,全部由html的報告自動處理
- 下方截圖為關(guān)聯(lián)參數(shù)填寫示例
常用的一些內(nèi)置函數(shù)
所有的內(nèi)置函數(shù)都在 common/bif_functions
這個包內(nèi),用戶可以自定義添加內(nèi)置函數(shù),設(shè)計內(nèi)置函數(shù)一定要設(shè)計返回值,不能直接返回
None,貌似沒有對 None 特殊處理
以下是一些內(nèi)置函數(shù)講解
- 這個MD5方法,一般都沒有使用,一般都是直接excel中是否使用【參數(shù)加密方式字段開關(guān)】來處理加密
- 內(nèi)置函數(shù)使用,統(tǒng)一是
{{xxx()}}
,可以傳參數(shù)到()內(nèi),比如{{token(999)}}
- 獲取一些時間戳方法,可以帶參數(shù)
- Faker 庫里面的有些隨機(jī)數(shù),需要更多自己添加就行了。
用例中添加等待時間
excel 字段中一個 Time
,字段值設(shè)置為 數(shù)字
,單位S
用例在執(zhí)行前,需要單獨執(zhí)行 sql 或者執(zhí)行后需要單獨執(zhí)行 sql,或者請求后立刻執(zhí)行 sql 并斷言 sql
excel 中有一個 method 字段,設(shè)置值為 sql 即可,后面的 SQL,SQL 變量字段按需填寫即可,一定要符合規(guī)范填寫
或者在請求的后面填寫 sql 語句及 sql 變量,都會默認(rèn)先執(zhí)行 sql,再執(zhí)行請求。
setup setupclass teardown tearDownClass ?
其實這套代碼這些都可以不需要使用,也可以使用,定制一些初始化函數(shù)或者唯一登錄這樣用,做數(shù)據(jù)清晰操作?可以將sql寫excel,
或者單獨再excel種建立一個sheet來執(zhí)行sql也是可行的,方法很多,很靈活
postman或者swagger的文件怎么快速轉(zhuǎn)為測試用例?
本框架已經(jīng)封裝好了解析函數(shù),直接將postman文件導(dǎo)出,放到指定目錄
運行excel_converter.py文件,即可得到測試用例
非??旖菔∈?,不用一條一條復(fù)制粘貼
更換不同的數(shù)據(jù)庫?
目前內(nèi)置有多種數(shù)據(jù)庫查鏈接方式,但是尚未使用起來,只是將mysql使用起來了,使用者如需要使用其他如 mongoDB 這類數(shù)據(jù)庫,
可以按 mysql 設(shè)計的方式去擴(kuò)展這個數(shù)據(jù)庫以適應(yīng) excel測試用例編寫方式,也可以聯(lián)系作者處理
發(fā)送企業(yè)微信通知
可以根據(jù)需要,自由修改企業(yè)微信發(fā)送的模板等等信息
主函數(shù)執(zhí)行入口
日志打印裝飾器
日志打印結(jié)果示例:
基本數(shù)據(jù)
測試報告?
html 或者 excel 中 都有,直接自行使用查看吧
企業(yè)微信測試報告:
html測試報告:
統(tǒng)計用例運行時長?
統(tǒng)計了每條用例從請求發(fā)出到響應(yīng)的時長,沒有統(tǒng)計其他時常信息,具體可以從 html 中查看
其他
- 本框架為2.0升級版本,升級之后的功能,現(xiàn)在基本上都是在 excel 中維護(hù)用例,無需測試人員編寫代碼,
- 和 1.0版本的區(qū)別在于,1.0版本也不需要測試人員寫代碼,但是斷言的方式比較生硬。
- 1.0版本已經(jīng)集成到測試開發(fā)平臺,可以去平臺使用,具體gitee
獨立個人信息工具介紹
直接執(zhí)行 main_personal_information.py
文件就可以生成非常棒的測試數(shù)據(jù)
Python隨機(jī)生成個人信息, 包括姓名、性別、年齡、出生日期、身份證號、銀行卡號、電話、手機(jī)號、郵箱等信息。
生成隨機(jī)個人信息
PS D:\api-test-project> python .\main_personal_information.py 海省廣州市南
請輸入你需要生成的數(shù)據(jù)總數(shù):10
+--------+------+------+------------+--------------------+----------------------+--------------+-------------+-------------------------+----------------------------------------+--------------------+ 門特別行政區(qū)
| 用戶名 | 性別 | 年齡 | 生日 | 身份證 | 銀行卡或信用卡 | 座機(jī) | 手機(jī)號 | 郵箱 | 地址 | 統(tǒng)一社會信用代碼 |
+--------+------+------+------------+--------------------+----------------------+--------------+-------------+-------------------------+----------------------------------------+--------------------+ 西省張家港市
| 劉世 | 男 | 57 | 1965-07-21 | 342422196507219413 | 62263745016607204 | 0744-3715089 | 14705083324 | liushi@tianya.cn | 甘肅省遼陽縣沙灣??诮謞座 180548 | 713101514054645086 |
| 龍清承 | 男 | 56 | 1966-08-21 | 342400196608212132 | 62284150185529051643 | 0893-4423648 | 13487550352 | longqingcheng@tianya.cn | 遼寧省玉珍市黃浦重慶街z座 401247 | 93421303115117882W |
| 劉嫻 | 女 | 37 | 1985-05-23 | 411023198505239964 | 6213058212589619696 | 0562-0004972 | 17303409666 | liuxian@tianya.cn | 福建省拉薩縣朝陽胡街X座 479131 | 92341122605351081N |
| 朱晨 | 男 | 55 | 1967-10-08 | 142733196710082991 | 45128971703439970 | 0375-7394954 | 18024463495 | zhuchen@139.com | 寧夏回族自治區(qū)秀云縣高坪任路Q座 544781 | 955205231604137955 |
| 許天有 | 男 | 51 | 1971-10-17 | 330901197110176212 | 62592648755593670 | 0973-8733227 | 13413236004 | xutianyou@wo.cn | 遼寧省天津市南長深圳路f座 952461 | 91120114649961877C |
| 陳錦 | 女 | 29 | 1993-02-12 | 452123199302128568 | 62260020819291645 | 0915-7410180 | 17509030433 | chenjin@icloud.com | 重慶市西安市沙灣廣州街G座 531384 | 92445302298701343Q |
+--------+------+------+------------+--------------------+----------------------+--------------+-------------+-------------------------+----------------------------------------+--------------------+
總結(jié)
以上就是勇哥今天為各位小伙伴準(zhǔn)備的內(nèi)容,如果你想了解更多關(guān)于Python自動化測試的知識和技巧,歡迎關(guān)注:
我的公眾號:百態(tài)測試
博客(奈非天的主頁 - 博客園 (cnblogs.com))
我會不定期地分享更多的精彩內(nèi)容。感謝你的閱讀和支持!文章來源:http://www.zghlxwxcb.cn/news/detail-594380.html
本文來自博客園,作者:奈非天,轉(zhuǎn)載請注明原文鏈接:https://www.cnblogs.com/Nephalem-262667641/p/17460169.html文章來源地址http://www.zghlxwxcb.cn/news/detail-594380.html
到了這里,關(guān)于接口自動化測試項目2.0,讓你像Postman一樣編寫測試用例,支持多環(huán)境切換、多業(yè)務(wù)依賴、數(shù)據(jù)庫斷言等的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!