接口自动化测试---数据存储

一、概述

前边写的自动化测试用例是直接用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':'alen@mail.com','sign':0,'event_id':1,'create_time':'2020-02-13 19:08:42'},
        {'id':'2','realname':'has sign','phone':12312341235,'email':'sign@mail.com','sign':1,'event_id':1,'create_time':'2020-02-13 19:08:42'},
        {'id':'3','realname':'john','phone':12312341236,'email':'john@mail.com','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()

用例运行全部通过; 

 


版权声明:本文为u011410999原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。