1. 程式人生 > 其它 >五、業務層、資料層、用例層

五、業務層、資料層、用例層

直接建立: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 ==============================

至此,我們自動化框架基本完成了,更多功能還需要讀者自己去擴充套件和補充。

原始碼下載:https://gitee.com/zhushengping/api-test.git