五、業務層、資料層、用例層
阿新 • • 發佈:2021-12-08
直接建立:data
目錄作為資料層,operations
包作為業務層,testcases
作為用例層。
yml檔案讀取功能
資料我們採用yaml
格式,封裝yaml檔案讀取功能,在utils
包下建立read_data.py
# utils/read_data.py import os import yaml root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) class ReadFileData: def load_yaml(self, file_path): try: data_file_path = os.path.join(root_path, "data", file_path) with open(data_file_path, encoding='utf-8') as f: data = yaml.safe_load(f) except Exception as ex: print(ex) else: return data data = ReadFileData()
資料層
data
下建立login.yml
檔案用於儲存登入的使用者名稱和密碼
# data/login.yml
login_data:
json:
username: 'admin'
password: '123456'
不要忘記在api
包下新增我們登入介面如下:
# api/login.py from base.http_client import HttpClient # 繼承HttpClient class Auth(HttpClient): # ..此處省略.. def token(self, **kwargs): return self.post('http://127.0.0.1:5000/user/token', **kwargs) auth = Auth()
業務層
在operaitons
包下建立auth.py
檔案
from api.auth import auth
from utils.read_data import data
# 讀取測試資料
data = data.load_yaml('login.yml')
def get_token():
test_case = data['login_data']
# 由於yml檔案讀取出來是字典形式,可以直接用關鍵字傳參方式呼叫api層的介面方法
return auth.token(**test_case)
測試用例層
把test_api.py
移動到testcases
# testcases/test_api.py
import pytest
from api.login import auth
from operations.auth import get_token
def test_01():
response = auth.login().json()
assert response.get('success') == 'ok'
# 新增登入測試用例
def test_token():
resp = get_token().json()
assert resp.get('msg') == '登入成功'
if __name__ == '__main__':
pytest.main()
執行用例成功
============================= test session starts =============================
platform win32 -- Python 3.7.1, pytest-6.2.1, py-1.10.0, pluggy-0.13.1
rootdir: D:\study\api-test
plugins: allure-pytest-2.8.31, dependency-0.5.1, forked-1.3.0, ordering-0.6, rerunfailures-9.1.1, xdist-2.2.1collected 2 items
testcases\test_api.py .. [100%]
============================== 2 passed in 0.81s ==============================
至此,我們自動化框架基本完成了,更多功能還需要讀者自己去擴充套件和補充。