1. 程式人生 > >python - 介面自動化測試 - TestLogin - 登入介面測試用例

python - 介面自動化測試 - TestLogin - 登入介面測試用例

 

# -*- coding:utf-8 -*-

'''
@project: ApiAutoTest
@author: Jimmy
@file: test_login.py
@ide: PyCharm Community Edition
@time: 2018-12-22 09:33
@blog: https://www.cnblogs.com/gotesting/

'''

import unittest
import os
from ddt import ddt,data
from Common.http_request import HttpRequest
from Common.read_excel import
ReadExcel from Common.read_config import ReadConfig from Common.basic_data import DoRegex,Context from Common.contants import * from Common.get_logger import GetLog import json # 讀取配置檔案,獲取當前URL字首,用於靈活更換測試伺服器地址 read_config = ReadConfig() url_pre = read_config.get_config_str('api','url_pre') # 讀取excel,獲取login測試資料
data_dir = os.path.join(data_dir,'test_data.xlsx') read_excel = ReadExcel(data_dir) login_cases = read_excel.get_cases('login') get_log = GetLog() @ddt class TestLogin(unittest.TestCase): def setUp(self): print('Test Start') def tearDown(self): print('Test End') @data(
*login_cases) def test_login(self,case): url = url_pre + case.url # 通過正則表示式 查詢/替換,將excel讀出來的${normal_user}及${normal_pwd}替換為配置檔案中讀取出的normal_user及normal_pwd的值 data = DoRegex.replace(case.data) # 將替換後的字串轉換成字典 data = json.loads(data) # 記錄當前測試case資訊 get_log.log_info('''Test Case Info: case_id : {0} title : {1} method : {2} url : {3} data : {4} expected: {5} '''.format(case.case_id,case.title,case.method,url,data,case.expected)) response = HttpRequest(method=case.method,url=url,data=data) actual = response.get_json()['msg'] # 記錄當前測試case介面響應資訊 get_log.log_info('''Test Case Request Response Result: response : {0} actual : {1} '''.format(response.get_json(),actual)) try: self.assertEquals(case.expected,actual) read_excel.write_result('login',case.case_id,actual,'Pass') get_log.log_info('Test Result is Passed ! case_id is {0},title is {1} '.format(case.case_id,case.title)) except Exception as e: read_excel.write_result('login',case.case_id,actual,'Fail') get_log.log_info('Test Result is Failed ! case_id is {0},title is {1} '.format(case.case_id,case.title)) get_log.log_error('Error msg :{0}'.format(e)) raise e