7.httprunner-pytest風格用例
阿新 • • 發佈:2022-05-09
用例設計原則
- py檔名以test_開頭或者_test結尾
- 函式名以test_開頭
- 類名以Test開頭,並且不能有init初始化方法
- 所有的包pakege必須有_init_.py檔案
base_url:base_url 指定 variables:全域性變數指定 export:指定匯出的測試用例會話變數暴露出來設為全域性變數pytest用例導包
#導包 from httprunner import HttpRunner # httprunner類,測試基類 from httprunner import Config #config類 from httprunner import Step # 用例步驟 from httprunner import RunRequest #請求 from httprunner import RunTestCase # 引入測試用例HttpRunner類
#httprunner類原始碼部分 class HttpRunner(object): config: Config teststeps: List[Step] ...''' httprunner類的屬性config 指向了 Config類,teststeps指向了list裡面的Setp '''
#config類原始碼 class Config(object): def __init__(self, name: Text): self.__name = name # 初始化name變數,傳入用例名稱 self.__variables = {} # 全域性變數 self.__base_url = "" #base_url self.__verify = False #https證書開關pytest用例編寫self.__export = [] #全域性變數提取 self.__weight = 1 caller_frame = inspect.stack()[1] self.__path = caller_frame.filename ''' 以上初始化變數,除了name是直接傳入 其餘變數在原始碼中下方都有對應的同名的函式處理,所有我們用Config類的時候 Config是鏈式呼叫,類傳入用例名稱,其餘的直接呼叫對應方法 '''
from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase # 繼承Httprunner類 class TestLogin(HttpRunner): config = (Config('登入用例') # 用例名稱 .base_url('https://xxx-xxx.com') # 域名地址 .verify(False) # https驗證開關 .variables(**{'user': 'test', 'pwd': 123456}) # 全域性變數 .export('token') # 將token設定為全域性變數 ) # 測試步驟,是一個list,裡面可以有多個步驟用例 teststeps = [ Step( # 每一個step,代表一個用例 # RunRequest類用來發送請求 RunRequest('step-login') # 步驟名稱 .post('/') # 請求方式 / 介面地址 .with_data({'username': '$user', 'password': '$pwd'}) # 請求引數 # 返回值提取 .extract() # 返回值使用jmespath表示式提取: 表示式,變數名 .with_jmespath('body.token', 'token') # 斷言 .validate() .assert_equal('body.code', 0, message='code不正確') ) ]RunRequest(測試步驟)
#get請求 .with_params(**{'page':1,'size':2}) #post請求 Content-Type:application/x-www-form-urlencoded .with_data({'page':1,'size':2}) #post請求 Content-Type:application/json .with_json({'page':1,'size':2})RunTestCase匯入用例
from .publish_test import TestCasePublish # 匯入要引入的用例類 #在步驟中引入 Step( RunTestCase("step-登入") .call(TestCasePublishstatus) # 匯入用例類 .export(*['uid']) #要提取的變數 )