app_record_statistic.py 10.2 KB
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import unittest
import requests
from data_fixture.config_data import HOST_BOSS, HOST_STA
from data_fixture import create_testdata as CreateTestData
from data_fixture import config_data as Data
from data_fixture.mysql_db import DB
import time
from datetime import date

db_test = DB()


#提交app使用记录
class AppRecordSave(unittest.TestCase):
    def setUp(self):
        self.base_url = HOST_STA + '/app/record/save'

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

    def test_AppRecordSave_success(self):
        headers = {'Content-Type': 'application/x-www-form-urlencoded', 'Accept': '*/*'}
        postData = {'appName': '学科同步',
                   'appPid': 'com.hjx.synsubject',
                   'timeSpent': 1088,
                   'userId': Data.USER_ID,
                   'deviceNumber': Data.DEVICE_NUMBER_CUS_BIND}
        send_time = str(time.time()).split('.')[0]
        r = requests.post(self.base_url, headers=headers, data=postData)
        self.result = r.json()
        self.assertEqual(self.result['status'], 1, 'test_AppRecordSave_success Error')
        where = {'app_name': '学科同步',
                   'app_pid': 'com.hjx.synsubject',
                   'time_spent': 1088,
                   'user_id': Data.USER_ID,
                   'device_number': Data.DEVICE_NUMBER_CUS_BIND}
        where_2 = " time_end >= {} ".format(send_time)
        self.assertTrue(db_test.select_('analytics.app_record', where, where_2) >= 1, 'test_AppRecordSave_success data Error')


# 按时间段获取app使用统计
class AppRecordStats(unittest.TestCase):
    def setUp(self):
        self.base_url = HOST_STA + '/app/record/stats'
        now = int(str(time.time()).split('.')[0])
        CreateTestData.create_app_use_record(now, Data.USER_ID, Data.DEVICE_NUMBER_CUS_BIND)

    def tearDown(self):
        pass

    def test_getAppRecordStats_all_success(self):
        getData = {'userId': Data.USER_ID,
                   'deviceNumber': Data.DEVICE_NUMBER_CUS_BIND,
                   'type': 'all'}
        r = requests.get(self.base_url, params=getData)
        self.result_1 = r.json()
        self.assertEqual(self.result_1['status'], 1, 'test_getAppRecordStats_all_success Error')
        self.assertTrue(self.result_1['data']['gameTime'] > 0)
        self.assertTrue(self.result_1['data']['studyTime'] > 0)

    def test_getAppRecordStats_year_success(self):
        getData = {'userId': Data.USER_ID,
                   'deviceNumber': Data.DEVICE_NUMBER_CUS_BIND,
                   'type': 'year'}
        r = requests.get(self.base_url, params=getData)
        self.result_2 = r.json()
        self.assertEqual(self.result_2['status'], 1, 'test_getAppRecordStats_year_success Error')
        self.assertTrue(self.result_2['data']['gameTime'] > 0)
        self.assertTrue(self.result_2['data']['studyTime'] > 0)

    def test_getAppRecordStats_month_success(self):
        getData = {'userId': Data.USER_ID,
                   'deviceNumber': Data.DEVICE_NUMBER_CUS_BIND,
                   'type': 'month'}
        r = requests.get(self.base_url, params=getData)
        self.result_3 = r.json()
        self.assertEqual(self.result_3['status'], 1, 'test_getAppRecordStats_month_success Error')
        self.assertTrue(self.result_3['data']['gameTime'] > 0)
        self.assertTrue(self.result_3['data']['studyTime'] > 0)

    def test_getAppRecordStats_week_success(self):
        getData = {'userId': Data.USER_ID,
                   'deviceNumber': Data.DEVICE_NUMBER_CUS_BIND,
                   'type': 'week'}
        r = requests.get(self.base_url, params=getData)
        self.result_4 = r.json()
        self.assertEqual(self.result_4['status'], 1, 'test_getAppRecordStats_week_success Error')
        self.assertTrue(self.result_4['data']['gameTime'] > 0)
        self.assertTrue(self.result_4['data']['studyTime'] > 0)


# 获取应用统计top排名
class AppRecordTop(unittest.TestCase):
    def setUp(self):
        self.base_url = HOST_STA + '/app/record/top'
        now = int(str(time.time()).split('.')[0])
        CreateTestData.create_app_use_record(now, Data.USER_ID, Data.DEVICE_NUMBER_CUS_BIND)

    def tearDown(self):
        pass

    def test_getAppRecordTop_hjx(self):
        getData = {'userId': Data.USER_ID,
                   'deviceNumber': Data.DEVICE_NUMBER_CUS_BIND,
                   'type': 'hjx'}
        r = requests.get(self.base_url, params=getData)
        self.result_1 = r.json()
        self.assertEqual(self.result_1['status'], 1, 'test_getAppRecordTop_hjx Error')
        self.assertTrue(len(self.result_1['data']) > 0)

    def test_getAppRecordTop_other(self):
        getData = {'userId': Data.USER_ID,
                   'deviceNumber': Data.DEVICE_NUMBER_CUS_BIND,
                   'type': 'other'}
        r = requests.get(self.base_url, params=getData)
        self.result_2 = r.json()
        self.assertEqual(self.result_2['status'], 1, 'test_getAppRecordTop_other Error')
        self.assertTrue(len(self.result_2['data']) > 0)


# 获取某一天的app统计
class AppRecordOneday(unittest.TestCase):
    def setUp(self):
        self.base_url = HOST_STA + '/app/record/oneday'
        self.now = int(str(time.time()).split('.')[0])
        CreateTestData.create_app_use_record(self.now, Data.USER_ID, Data.DEVICE_NUMBER_CUS_BIND)

    def tearDown(self):
        pass

    def test_getAppRecordOneday_success(self):
        getData = {'userId': Data.USER_ID,
                   'deviceNumber': Data.DEVICE_NUMBER_CUS_BIND,
                   'dayTimestamp': str(time.mktime(date.today().timetuple())).split('.')[0]}
        pageNum = 1
        appRecord = []
        while True:
            getData.update({'pageNum':pageNum})
            r = requests.get(self.base_url, params=getData)
            self.result = r.json()
            appRecord = appRecord + self.result['data']
            if len(self.result['data']) == 0:
                break
            pageNum += 1

        self.result_1 = r.json()
        self.assertTrue(len(appRecord) == 24)

        app_name = appRecord[0]['appName']
        time_spent = appRecord[0]['timeSpentTotal']
        time_end = appRecord[0]['latestTimeEnd']
        source_id = appRecord[0]['sourceId']
        category_id = appRecord[0]['categoryId']
        categoryType = appRecord[0]['categoryType']
        study_category = [25,26,27,28,57]
        game_category = [37,38,39,100]

        where_1 = {'app_name':app_name,
                 'time_spent':time_spent,
                 'time_end': time_end,
                 'source_id':source_id,
                 'category_id':category_id,
                 'user_id': Data.USER_ID,
                 'device_number': Data.DEVICE_NUMBER_CUS_BIND
        }
        self.assertEqual(db_test.select_('analytics.app_record', where_1) , 1)
        if category_id in study_category:
            self.assertEqual(categoryType, 1)
        if category_id in game_category:
            self.assertEqual(categoryType, 2)


# 获取几天的app统计
class AppRecordEveryday(unittest.TestCase):
    def setUp(self):
        self.base_url = HOST_STA + '/app/record/everyday'
        self.now = int(str(time.time()).split('.')[0])
       # CreateTestData.create_app_use_record(self.now, Data.USER_ID, Data.DEVICE_NUMBER_CUS_BIND)
        CreateTestData.create_app_use_record(self.now, '7000000054686780', '123456789002')


    def tearDown(self):
        pass

    def test_getAppRecordEveryday_success(self):
        # getData = {'userId': Data.USER_ID,
        #            'deviceNumber': Data.DEVICE_NUMBER_CUS_BIND,
        #            'pageNum': 1,
        #            'pageSize': 7}
        getData = {'userId': '7000000054686780',
                   'deviceNumber': '123456789002',
                   'pageNum': 1,
                   'pageSize': 7}
        r = requests.get(self.base_url, params=getData)
        self.result = r.json()
        self.assertEqual(self.result['status'], 1, 'test_getAppRecordEveryday_success Error')
        self.assertEqual(self.result['data'][0]['gameTimeSpent'], 2550)
        self.assertEqual(self.result['data'][0]['studyTimeSpent'], 3150)


# 获取当天的app统计
class AppRecordToday(unittest.TestCase):
    def setUp(self):
        self.base_url = HOST_STA + '/app/record/today'
        self.now = int(str(time.time()).split('.')[0])
        CreateTestData.create_app_use_record(self.now, Data.USER_ID, Data.DEVICE_NUMBER_CUS_BIND)

    def tearDown(self):
        pass

    def test_AppRecordToday_success(self):
        getData = {'userId': Data.USER_ID,
                   'deviceNumber': Data.DEVICE_NUMBER_CUS_BIND}
        r = requests.get(self.base_url, params=getData)
        self.result = r.json()
        self.assertEqual(self.result['status'], 1, 'AppRecordToday Error')
        self.assertEqual(self.result['data']['gameTimeSpent'], 2550)
        self.assertEqual(self.result['data']['studyTimeSpent'], 3150)


#重置数据接口
class AppRecordReset(unittest.TestCase):
    def setUp(self):
        self.base_url = HOST_STA + '/app/record/reset'
        # create elec card , to get mobile phpne
        self.password = CreateTestData.get_parentSpace_password(Data.DEVICE_NUMBER_CUS_BIND)
        now = int(str(time.time()).split('.')[0])
        CreateTestData.create_app_use_record(now, Data.USER_ID, Data.DEVICE_NUMBER_CUS_BIND)

    def tearDown(self):
        pass

    def test_AppRecordReset_success(self):
        getData = {'deviceNumber': Data.DEVICE_NUMBER_CUS_BIND,
                   'password': self.password,
                   'userId': Data.USER_ID
                   }
        r = requests.post(self.base_url, data=getData)
        self.result = r.json()
        self.assertEqual(self.result['status'], 1, 'test_AppRecordReset_success Error')
        where = {'device_number': Data.DEVICE_NUMBER_CUS_BIND,
                   'user_id': Data.USER_ID
                   }
        self.assertEqual(db_test.select_('analytics.app_record', where), 0)

    def test_AppRecordReset_passwordError(self):
        getData = {'deviceNumber': Data.DEVICE_NUMBER_CUS_BIND,
                   'userId': Data.USER_ID,
                   'password': self.password + '111'
                   }
        r = requests.post(self.base_url, data=getData)
        self.result_2 = r.json()
        self.assertEqual(self.result_2['status'], 1005, 'test_AppRecordReset_passwordError Error')