項(xiàng)目介紹
接口自動(dòng)化測試項(xiàng)目2.0
軟件架構(gòu)
本框架主要是基于 Python + unittest + ddt + HTMLTestRunner + log + excel + mysql + 企業(yè)微信通知 + Jenkins 實(shí)現(xiàn)的接口自動(dòng)化框架。
前言
公司突然要求你做自動(dòng)化,但是沒有代碼基礎(chǔ)不知道怎么做?或者有自動(dòng)化基礎(chǔ),但是不知道如何系統(tǒng)性的做自動(dòng)化, 放在 excel 文件中維護(hù),不知道如何處理多業(yè)務(wù)依賴的邏輯,又或者你想想postman一樣可以給每一條測試用例編寫一些代碼來處理腳本,但是又不知道怎么做。 那么 gitee 中我的自動(dòng)化測試框架,將為你解決這些問題。
框架優(yōu)勢
本框架不收取汾河費(fèi)用,其優(yōu)勢在于測試人員直接編寫測試用例,運(yùn)行一個(gè)測試文件就可以自動(dòng)執(zhí)行所有測試用例。
框架主要使用 python 語言編寫,結(jié)合 unittest 進(jìn)行二次開發(fā),用戶僅需要在 excel 文件中編寫測試用例, 編寫成功之后,會(huì)自動(dòng)生成測試用例的代碼,零基礎(chǔ)代碼小白,也可以操作。
本框架支持多環(huán)境切換,多業(yè)務(wù)接口依賴,mysql 數(shù)據(jù)庫斷言和 接口響應(yīng)斷言,并且用例直接在 excel 文件中維護(hù),無需編寫業(yè)務(wù)代碼, 本框架支持動(dòng)態(tài)腳本函數(shù)擴(kuò)展,可以隨時(shí)內(nèi)部預(yù)置函數(shù),或者增加動(dòng)態(tài)腳本,通過固定格式寫法 {{fun()}} 動(dòng)態(tài)調(diào)用 接口 unittest 框架生成 HTML 報(bào)告及 excel 用例執(zhí)行報(bào)告,并且發(fā)送 企業(yè)微信通知/ 釘釘通知/ 郵箱通知/ 飛書通知,靈活配置。
實(shí)現(xiàn)功能
- 測試數(shù)據(jù)隔離, 實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)。
- 支持多套環(huán)境使用,比如測試用例相同,但是環(huán)境不同,只需在 excel 中啟用需要執(zhí)行的環(huán)境即可。
- 支持多接口數(shù)據(jù)依賴: 如A接口需要同時(shí)依賴 B、C 接口的響應(yīng)數(shù)據(jù)作為參數(shù),或者 c 接口斷言需要?jiǎng)討B(tài)使用A接口的入?yún)⒆鳛轭A(yù)期結(jié)果。
- 數(shù)據(jù)庫斷言: 直接在測試用例中寫入查詢的 sql 即可斷言,無需編寫代碼。
- 動(dòng)態(tài)多斷言: 如接口需要同時(shí)校驗(yàn)響應(yīng)數(shù)據(jù)和 sql 校驗(yàn),支持多場景斷言。
- 支持自定義腳本代碼(python語言),可以讓你像 postman 一樣給每一條測試用例編寫任意前后置腳本代碼,內(nèi)置了 action 對象操作及一些方法可以很便捷的處理前置或后置腳本。
- 自動(dòng)生成用例代碼: 測試人員在 excel 文件中填寫好測試用例, 程序可以直接生成用例代碼,純小白也能使用。
- 支持自定義拓展函數(shù): 如用例中需要使用自己實(shí)現(xiàn)的函數(shù),可以隨時(shí)在指定的目錄下面寫上函數(shù),通過 {{func(*args,**kwargs)}} 隨時(shí)調(diào)用你自己設(shè)置的函數(shù)。
- 內(nèi)置實(shí)現(xiàn)了一部分隨意函數(shù)及自定義常用函數(shù):如:隨機(jī)字符串、任意日期時(shí)間、隨機(jī)gps、隨機(jī)用戶身份證、地址、郵箱、企業(yè)信息等等,用戶還可以自己定義任意函數(shù),無門檻使用。
- 統(tǒng)計(jì)接口的運(yùn)行時(shí)長: 拓展功能,訂制開關(guān),可以決定是否需要使用。
- 支持用例定時(shí)器運(yùn)行,比如:B用例執(zhí)行前需要A用例執(zhí)行后等待5秒才開始執(zhí)行,可以隨意加上等待時(shí)間。
- 日志模塊: 打印每個(gè)接口的日志信息,同樣訂制了開關(guān),可以決定是否需要打印日志。
- 釘釘、企業(yè)微信通知、郵件通知: 支持多種通知場景,執(zhí)行成功之后,可選擇發(fā)送釘釘、或者企業(yè)微信、郵箱通知。
- 封裝了發(fā)送MQTT的類,支持發(fā)送MQTT消息。
- 支持導(dǎo)入postman或者swargs導(dǎo)出的json文件自動(dòng)處理成測試用例,然后修改一下參數(shù)即可使用。
gitee 地址
接口自動(dòng)化框架地址:入群自取:微信:Testing_player
遇到問題
- 請仔細(xì)閱讀文檔,文檔中幾乎可以幫你避免所有的問題
- 可以添加微信: blue-blue-lemon, 添加微信會(huì)將你拉倒自動(dòng)化交流群中,群內(nèi)有很多熱心的小伙伴,但是前提是希望你已經(jīng)閱讀了文檔中的所有內(nèi)容
- 你也可以請作者為你解答,當(dāng)然在我時(shí)間空閑的時(shí)候,也可以讓作者為你一對一服務(wù),當(dāng)然是收費(fèi)的。
目錄概覽:
?
詳細(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í)間函數(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í)間函數(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中的加密方法選項(xiàng),結(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ù) (暫時(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)字符串,常用于驗(yàn)證碼登錄 └── load_and_execute_script.py // 動(dòng)態(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/ // 斷言及加載動(dòng)條函數(shù)工具包 └── __init__.py └── comparator_dict.py // 自定義比較器名詞釋義 └── comparators.py // 自定義比較器 └── extractor.py // 提取器 └── load_modules_from_folder.py // 動(dòng)態(tài)從模塊中加載函數(shù) └── loaders.py // 動(dòng)態(tài)加載函數(shù)及加載內(nèi)置比較器等工具包 └── validator.py // 斷言校驗(yàn)器 └── __init__.py └── action.py // 核心類 └── config.py // 配置文件 └── variables.py // 數(shù)據(jù)操作類 └── extensions/ // 動(dòng)態(tài)擴(kuò)展模塊目錄 └── __init__.py └── ext_method_online.py // 動(dòng)態(tài)擴(kuò)展方法模塊 └── sign.py // 加簽?zāi)K └── image/ └── wx.jpg └── zfb.jpg └── OutPut/ // 日志報(bào)錯(cuò) └── log/ └── 2023-06-25.log └── 2023-07-04.log └── 2023-07-05.log └── reports/ └── history.json └── scripts/ // 動(dòng)態(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 // 項(xiàng)目目錄樹模塊 └── main_personal_information.py // 隨機(jī)個(gè)人信息核心入口 └── pipenv_command.text └── Pipfile └── Pipfile.lock └── README.md └── run.py // 自動(dòng)化測試執(zhí)行入口模塊
安裝教程
依賴庫
參考 pipenv --Pipfile 虛擬環(huán)境文件,不一一列出
首先,執(zhí)行本框架之后,需要搭建好 python 環(huán)境,python 環(huán)境搭建自行百度
- 安裝 pipenv環(huán)境: pip install pipenv
- 創(chuàng)建虛擬環(huán)境: pipenv install
- 如果有個(gè)別包無法安裝,則:pipenv shell 進(jìn)入環(huán)境后,再pipenv install XX包
使用說明
- 測試用例只需要在 cases/cases/xxx.xlsx 文件填寫測試用例即可,可以參考測試用例模板文件,由于模板文件的用例已經(jīng)做了敏感信息處理,所以執(zhí)行執(zhí)行模板的用例應(yīng)該會(huì)報(bào)錯(cuò)
- 運(yùn)行用例可以直接進(jìn)入到 test_script/test_xxx.py 中,執(zhí)行test_xxx.py文件,也可以直接運(yùn)訓(xùn) 最外層的 run.py文件,
- Personalinformation.py 這個(gè)文件是用來生成一些測試數(shù)據(jù),方便做功能測試或者其他一般性測試使用
開放測試接口文檔
大家可以使用開源接口中的登錄、個(gè)人信息、收藏(新增、查看、修改、刪除)等功能,編寫接口自動(dòng)化案例,然后測試程序腳本 下方是接口文檔地址,大家可以自行查看(因?yàn)殚_源的接口,里面有些邏輯性的功能,如修改被刪除的網(wǎng)址接口并沒有過多的做判斷, 因此用例中只寫了一些基礎(chǔ)的場景,僅供大家參考。)
- wanandroid.com/blog/show/2
如何創(chuàng)建用例
excel中的測試用例相關(guān)字段介紹
下面是一個(gè)關(guān)于一個(gè)用例中的所有字段,字段不是全部必填
?
下面對每一個(gè)字段的作用,做出解釋:
- Id:測試用例的id,唯一,必填
- Name: 測試用例的名稱,必填
- Description: 測試用例描述,可選,建議填寫,生成的報(bào)告會(huì)用到這個(gè)字段
- Run: 是否運(yùn)行這條用例,如果不填或填寫的不是
YES/yes
,則不運(yùn)行這條用例 - Time: 定時(shí)器,數(shù)字,非必填,填寫則會(huì)等待多少秒后運(yùn)行這條用例
- Method: 請求方法,支持所有的http請求方法,
get/post/put/patch
等等 - Url: 接口路徑或者整個(gè)請求地址,如果不帶域名,則會(huì)自動(dòng)去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過長的時(shí)候,可以將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)用才會(huì)執(zhí)行。編寫方式示例:
# 可以寫類,可以寫函數(shù),可以直接普通python語句, def setup(action): print("獲取action示例的屬性", action.get_vars()) # 更新屬性到action實(shí)例的屬性中 action.update_vars("999", "99999") print("獲取所有的臨時(shí)變量", action.get_variable()) print("將變量存到臨時(shí)變量表中以便后續(xù)用例{{key}}使用", action.update_variable("key", "value")) print("將函數(shù)存到臨時(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ù)的字段或整個(gè)請求參數(shù)字典,如:
{"k": "$.projectId", "x": "$.data[0].age[3].a"}
- Jsonpath: 提取響應(yīng)結(jié)果的 jsonpath 表達(dá)式,示例:默認(rèn)情況下若表達(dá)式結(jié)果只有一個(gè)值那么就存為字符串,如果表達(dá)式執(zhí)行結(jié)果有多個(gè)值,那么就存為列表,表達(dá)式填寫方式如下:
{"k": "$.data", "x": "$.data[0].age[3].a"}
- Regex: 正則表達(dá)式,填寫正則表達(dá)式字符串,示例:
r'"id": (\d+), "name": "(\w+)",'
- Regex Params List:填寫一個(gè)列表(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ā)送請求后會(huì)自動(dòng)執(zhí)行該代碼
- Expected:預(yù)期結(jié)果,寫法示例:
[{"check":"result.user.name","comparator":"eq","expect":"chenyongzhi"}]
or{"check":"result.user.name","comparator":"eq","expect":"chenyongzhi"}
,支持的斷言比較方式有如下這些:
{ "eq": "eq:實(shí)際值與期望值相等", "lt": "lt:實(shí)際值小于期望值", "lte": "lte:實(shí)際值小于或等于期望值", "gt": "gt:實(shí)際值大于期望值", "gte": "gte:實(shí)際值大于或等于期望值", "neq": "neq:實(shí)際值與期望值不相等", "str_eq": "str_eq:字符串實(shí)際值與期望值相同", "length_eq": "length_eq:實(shí)際值的長度等于期望長度", "length_gt": "length_gt:實(shí)際值的長度大于期望長度", "length_gte": "length_gte:實(shí)際值的長度大于或等于期望長度", "length_lt": "length_lt:實(shí)際值的長度小于期望長度", "length_lte": "length_lte:實(shí)際值的長度小于或等于期望長度", "contains": "contains:期望值包含在實(shí)際值中", "contained_by": "contained_by:實(shí)際值被包含在期望值中", "type_match": "type_match:實(shí)際值的類型與期望值的類型相匹配", "regex_match": "type_match:正則匹配(從字符串的起始位置匹配)", "regex_search": "regex_search:正則匹配(從字符串的任意位置匹配)", "startswith": "startswith:實(shí)際值是以期望值開始", "endswith": "endswith:實(shí)際值是以期望值結(jié)束" }
- Response: 響應(yīng)結(jié)果,用例執(zhí)行后,會(huì)自動(dòng)將結(jié)果回寫到這個(gè)excel中,查看測試結(jié)果,一目了然。
創(chuàng)建用例步驟
開始填寫測試用例前,先看看這個(gè)init表的字段,下面我會(huì)統(tǒng)一講解:
?
- 在
cases
文件夾下方創(chuàng)建被測模塊或者系統(tǒng),然后在系統(tǒng)下創(chuàng)建相關(guān)的excel
用例(可以復(fù)制模板e(cuò)xcel文件來填寫測試用例) - 將測試用例路徑添加到
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,非必填,填寫了就會(huì)取這部分的地址與測試用例中的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是哪一個(gè),全部執(zhí)行就填寫 'all',部分執(zhí)行就填寫具體的sheet如["第一個(gè)sheet的名稱","第二個(gè)sheet的名稱"...] initialize_data:初始化的一些固定參數(shù),比如登錄賬號,密碼,等等都是基本不變的數(shù)據(jù)可以填寫這里,屬于全局變量,填寫方式字典{"{{username}}":"1234","{{pwd}}":"密碼"} run: 決定使用的環(huán)境,值為yes表示用這個(gè)環(huán)境運(yùn)行,有多個(gè)環(huán)境都填寫yes,只運(yùn)行第一個(gè)yes """
以上都填寫完成,記得先關(guān)閉 excel
,然后就可以單獨(dú)執(zhí)行 test_api.py
文件,或者直接運(yùn)行 run.py
主入口文件,生成HTML報(bào)告及excel測試報(bào)告
下面我們來看一下,如何創(chuàng)建用例
用例中相關(guān)字段的介紹
- 下發(fā)截圖為 init 初始化基礎(chǔ)數(shù)據(jù)填寫用例
?
- init 中 sheets 內(nèi)的列表排序是有作用的,執(zhí)行用例是按照列表內(nèi)值排序執(zhí)行的。
- 下方截圖就是 excel 用例 每個(gè)字段是否必填的描述
- 每條測試用例都可以自定義是否開啟,開啟則執(zhí)行,不開啟則跳過,默認(rèn)執(zhí)行結(jié)果是通過
- 每一個(gè)sheet都可以隨意組合用例,不同sheet之間的變量參數(shù)可以共用(即變量全局的),不獨(dú)立設(shè)計(jì),主要是考慮到分sheet只是為了方面管理用例,但是執(zhí)行依然是一次性全部執(zhí)行
- 目前沒有設(shè)計(jì)每一個(gè)sheet的最大用例條數(shù),默認(rèn)取excel最大數(shù)據(jù)量,如果發(fā)現(xiàn)最大數(shù)據(jù)量撐爆內(nèi)存,建議分多個(gè)excel來寫測試用例
- 目前使用的生成器的方式讀取excel,主要是防止一次性內(nèi)存被撐爆
- 測試報(bào)告是按照excel來生成的,測試報(bào)告的樣式?jīng)]有按模塊區(qū)分,實(shí)際上直接打開excel就可以看到報(bào)告結(jié)果了。
- 其他一些沒有多大作用的,通過率,跳過條數(shù),通過條數(shù),失敗條數(shù)等,沒有另外處理,全部由html的報(bào)告自動(dòng)處理
- 下方截圖為關(guān)聯(lián)參數(shù)填寫示例
??
常用的一些內(nèi)置函數(shù)
所有的內(nèi)置函數(shù)都在 common/bif_functions
這個(gè)包內(nèi),用戶可以自定義添加內(nèi)置函數(shù),設(shè)計(jì)內(nèi)置函數(shù)一定要設(shè)計(jì)返回值,不能直接返回 None,貌似沒有對 None 特殊處理 以下是一些內(nèi)置函數(shù)講解
?
- 這個(gè)MD5方法,一般都沒有使用,一般都是直接excel中是否使用【參數(shù)加密方式字段開關(guān)】來處理加密
- 內(nèi)置函數(shù)使用,統(tǒng)一是
{{xxx()}}
,可以傳參數(shù)到()內(nèi),比如{{token(999)}}
- 獲取一些時(shí)間戳方法,可以帶參數(shù)
- Faker 庫里面的有些隨機(jī)數(shù),需要更多自己添加就行了。
?
用例中添加等待時(shí)間
excel 字段中一個(gè) Time
,字段值設(shè)置為 數(shù)字
,單位S
?
用例在執(zhí)行前,需要單獨(dú)執(zhí)行 sql 或者執(zhí)行后需要單獨(dú)執(zhí)行 sql,或者請求后立刻執(zhí)行 sql 并斷言 sql
excel 中有一個(gè) method 字段,設(shè)置值為 sql 即可,后面的 SQL,SQL 變量字段按需填寫即可,一定要符合規(guī)范填寫 或者在請求的后面填寫 sql 語句及 sql 變量,都會(huì)默認(rèn)先執(zhí)行 sql,再執(zhí)行請求。
?
setup setupclass teardown tearDownClass ?
其實(shí)這套代碼這些都可以不需要使用,也可以使用,定制一些初始化函數(shù)或者唯一登錄這樣用,做數(shù)據(jù)清晰操作?可以將sql寫excel, 或者單獨(dú)再excel種建立一個(gè)sheet來執(zhí)行sql也是可行的,方法很多,很靈活
postman或者swagger的文件怎么快速轉(zhuǎn)為測試用例?
本框架已經(jīng)封裝好了解析函數(shù),直接將postman文件導(dǎo)出,放到指定目錄 運(yùn)行excel_converter.py文件,即可得到測試用例 非??旖菔∈?,不用一條一條復(fù)制粘貼
?
?
?
更換不同的數(shù)據(jù)庫?
目前內(nèi)置有多種數(shù)據(jù)庫查鏈接方式,但是尚未使用起來,只是將mysql使用起來了,使用者如需要使用其他如 mongoDB 這類數(shù)據(jù)庫, 可以按 mysql 設(shè)計(jì)的方式去擴(kuò)展這個(gè)數(shù)據(jù)庫以適應(yīng) excel測試用例編寫方式,也可以聯(lián)系作者處理
?
發(fā)送企業(yè)微信通知
可以根據(jù)需要,自由修改企業(yè)微信發(fā)送的模板等等信息
?
主函數(shù)執(zhí)行入口
?
日志打印裝飾器
?
日志打印結(jié)果示例:
?
?
?
基本數(shù)據(jù)
?
?
測試報(bào)告?
html 或者 excel 中 都有,直接自行使用查看吧
?
企業(yè)微信測試報(bào)告:
?
?
html測試報(bào)告:
?
?
統(tǒng)計(jì)用例運(yùn)行時(shí)長?
統(tǒng)計(jì)了每條用例從請求發(fā)出到響應(yīng)的時(shí)長,沒有統(tǒng)計(jì)其他時(shí)常信息,具體可以從 html 中查看
其他
- 本框架為2.0升級版本,升級之后的功能,現(xiàn)在基本上都是在 excel 中維護(hù)用例,無需測試人員編寫代碼,
- 和 1.0版本的區(qū)別在于,1.0版本也不需要測試人員寫代碼,但是斷言的方式比較生硬。
- 1.0版本已經(jīng)集成到測試開發(fā)平臺,可以去平臺使用,具體gitee
獨(dú)立個(gè)人信息工具介紹
直接執(zhí)行 main_personal_information.py
文件就可以生成非常棒的測試數(shù)據(jù) Python隨機(jī)生成個(gè)人信息, 包括姓名、性別、年齡、出生日期、身份證號、銀行卡號、電話、手機(jī)號、郵箱等信息。
生成隨機(jī)個(gè)人信息
PS D:\api-test-project> python .\main_personal_information.py 海省廣州市南 請輸入你需要生成的數(shù)據(jù)總數(shù):10 +--------+------+------+------------+--------------------+----------------------+--------------+-------------+-------------------------+----------------------------------------+--------------------+ 門特別行政區(qū) | 用戶名 | 性別 | 年齡 | 生日 | 身份證 | 銀行卡或信用卡 | 座機(jī) | 手機(jī)號 | 郵箱 | 地址 | 統(tǒng)一社會(huì)信用代碼 | +--------+------+------+------------+--------------------+----------------------+--------------+-------------+-------------------------+----------------------------------------+--------------------+ 西省張家港市 | 劉世 | 男 | 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自動(dòng)化測試的知識和技巧,歡迎關(guān)注哦!
資料獲取方法
【留言777】
各位想獲取源碼等教程資料的朋友請點(diǎn)贊 + 評論 + 收藏,三連!文章來源:http://www.zghlxwxcb.cn/news/detail-640496.html
三連之后我會(huì)在評論區(qū)挨個(gè)私信發(fā)給你們~文章來源地址http://www.zghlxwxcb.cn/news/detail-640496.html
到了這里,關(guān)于python接口自動(dòng)化測試框架2.0,讓你像Postman一樣編寫測試用例,支持多環(huán)境切換、多業(yè)務(wù)依賴、數(shù)據(jù)庫斷言等的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!