接口自動化測試---數據存儲

一、概述

前邊寫的自動化測試用例是直接用sql語句插入數據,沒有考慮到多條測試數據,如果後期和數據庫交互有多條數據,則用戶和數據放在一個文件中就沒有很好的分離,這樣腳本的維護性就很差,並且增加的接口用例,所有目錄結構更新如下:

 

  1. mysql_db.py爲數據庫的封裝操作;
  2. test_data.py爲測試數據;
  3. add_event_test.py爲接口的測試,包含正常、異常參數測試;

二、代碼示例

1、test_data.py

import sys,time
sys.path.append('../db_fixture')
try:
    from mysql_db import DB
except ImportError:
    from .mysql_db import DB

# 定義過去時間
past_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()-100000))

# 定義將來時間
future_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()+10000))

#創建測試數據
datas = {
    #發佈會數據
    'sign_event':[
        {'id':1,'name':'紅米','`limit`':2000,'status':1,'address':'北京會展中心','start_time':future_time,'create_time':'2020-02-13 19:08:42'},
        {'id':2,'name':'可參展人數爲0','`limit`':0,'status':1,'address':'北京會展中心','start_time':future_time,'create_time':'2020-02-13 19:08:42'},
        {'id':3,'name':'當前狀態0關閉','`limit`':2000,'status':0,'address':'北京會展中心','start_time':future_time,'create_time':'2020-02-13 19:08:42'},
        {'id':4,'name':'發佈會已結束','`limit`':2000,'status':1,'address':'北京會展中心','start_time':past_time,'create_time':'2001-02-13 19:08:42'},
        {'id':5,'name':'蘋果發佈會','`limit`':2000,'status':1,'address':'西安會展中心','start_time':future_time,'create_time':'2020-02-13 19:08:42'},
    ],
    #嘉賓數據
    'sign_guest':[
        {'id':'1','realname':'alen','phone':12312341234,'email':'[email protected]','sign':0,'event_id':1,'create_time':'2020-02-13 19:08:42'},
        {'id':'2','realname':'has sign','phone':12312341235,'email':'[email protected]','sign':1,'event_id':1,'create_time':'2020-02-13 19:08:42'},
        {'id':'3','realname':'john','phone':12312341236,'email':'[email protected]','sign':1,'event_id':5,'create_time':'2020-02-13 19:08:42'},
    ]
}

# Inster table datas
def init_data():
    DB().init_data(datas)
    print(datas)


if __name__ == '__main__':
    init_data()

2、 add_event_test.py

import unittest
import requests
import os, sys
parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, parentdir)
from db_fixture import test_data


class AddEventTest(unittest.TestCase):
    ''' 添加發佈會 '''

    def setUp(self):
        self.base_url = "http://127.0.0.1:8000/api/add_event/"

    def tearDown(self):
        print(self.result)

    def test_add_event_success(self):
        ''' 添加成功 '''
        payload = {'eid':6,'name':'一加4手機fdfd發佈會','limit':2000,'address':"深圳寶體",'start_time':'2017-05-10 12:00:00','create_time':'2020-02-13 19:08:42'}
        r = requests.post(self.base_url,data=payload)
        self.result = r.json()
        self.assertEqual(self.result['status'], 200)
        self.assertEqual(self.result['message'], 'add event success')

    def test_add_event_all_null(self):
        ''' 所有參數爲空 '''
        payload = {'eid':'','name':'','limit':'','address':"",'start_time':''}
        r = requests.post(self.base_url, data=payload)
        self.result = r.json()
        self.assertEqual(self.result['status'], 10021)
        self.assertEqual(self.result['message'], 'parameter error')

    def test_add_event_eid_exist(self):
        ''' id已經存在 '''
        payload = {'eid':1,'name':'一加4發佈會','limit':2000,'address':"深圳寶體",'start_time':'2017-05-10 12:00:00','create_time':'2020-02-13 19:08:42'}
        r = requests.post(self.base_url, data=payload)
        self.result = r.json()
        self.assertEqual(self.result['status'], 10022)
        self.assertEqual(self.result['message'], 'event id already exists')

    def test_add_event_name_exist(self):
        ''' 名稱已經存在 '''
        payload = {'eid':11,'name':'紅米','limit':2000,'address':"深圳寶體",'start_time':'2017-05-10 12:00:00','create_time':'2020-02-13 19:08:42'}
        r = requests.post(self.base_url,data=payload)
        self.result = r.json()
        self.assertEqual(self.result['status'], 10023)
        self.assertEqual(self.result['message'], 'event name already exists')

    def test_add_event_data_type_error(self):
        ''' 日期格式錯誤 '''
        payload = {'eid':13,'name':'一加4444手機發佈會','limit':2000,'address':"深圳寶體",'start_time':'dffd','create_time':'2020-02-13 19:08:42'}
        r = requests.post(self.base_url,data=payload)
        self.result = r.json()
        self.assertEqual(self.result['status'], 10024)
        self.assertIn('start_time format error.', self.result['message'])

if __name__ == '__main__':
    test_data.init_data() # 初始化接口測試數據
    print("123")
    unittest.main()

用例運行全部通過; 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章