Example #1
0
 def Perform(self):
     # 使用cursor()方法获取操作游标
     self.db = self.connect_db()
     self.cursor = self.db.cursor()
     sql = self.get_sql()
     version = self.db.server_version
     Log().info('成功登录数据库:%s,版本为:%s,执行SQL:%s' % (self.getdb, version, sql))
     if "SELECT" in sql or "select" in sql:
         # 查询
         try:
             self.cursor.execute(sql)
             results = self.cursor.fetchall()
             Log().info('查询结果:%s' % results[0][0])
             return results[0][0]
         except:
             Log().info("Error: unable to fetch data")
             raise
     elif "UPDATE" in sql or "update" in sql:
         #修改
         try:
             self.cursor.execute(sql)
             self.db.commit()
             Log().info("更新成功")
         except:
             self.db.rollback()
             Log().info("Error:Has been rolled back")
             raise
     self.db.close()
Example #2
0
 def get_param(self):
     if self.param_place != 'database':
         return self.connent
     else:
         #获取数据库名
         self.database = Getyaml(yamlparam="interface_db",
                                 interface=self.url).port_db()
         Log().info('当前接口涉及数据库:%s' % self.database)
         #执行数据库操作
         post_data = Operate_db(self.database, self.url).Perform()
         Log().info('数据格式为:%s' % post_data)
         return post_data
def datacel(filrpath):
    try:
        file = xlrd.open_workbook(filrpath)
        me = file.sheets()[0]
        nrows = me.nrows
        listid = []
        listname = []
        listkey = []
        listconeent = []
        listparam_place = []
        listurl = []
        listfangshi = []
        listqiwang1 = []
        listqiwang2 = []
        for i in range(1, nrows):
            listid.append(me.cell(i, 0).value)
            listname.append(me.cell(i, 1).value)
            listkey.append(me.cell(i, 2).value)
            listconeent.append(me.cell(i, 3).value)
            listparam_place.append(me.cell(i, 4).value)
            listurl.append(me.cell(i, 5).value)
            listfangshi.append((me.cell(i, 6).value))
            listqiwang1.append((me.cell(i, 7).value))
            listqiwang2.append((me.cell(i, 8).value))
        return listid, listname, listkey, listconeent, listparam_place, listurl, listfangshi, listqiwang1, listname, listqiwang2
    except:
        Log().error('打开测试用例失败,原因是:%s' % Exception)
Example #4
0
def assertre(asserqingwang):
    if len(asserqingwang.split('=')) > 1:
        data = asserqingwang.split('&')  #['code=4001']
        result = dict([(item.split('=')) for item in data])  #{'code': '4001'}
        return result
    else:
        Log().info('填写测试预期值')
        raise {"code": 1, 'result': '填写测试预期值'}
Example #5
0
    def _run_maxim(run, cases, command, actions, widget_black):
        log = Log()
        log.set_logger(run.get_device()['model'],
                       os.path.join(run.get_path(), 'client.log'))
        log.i('udid: %s', run.get_device()['udid'])

        # set cls.path, it must be call before operate on any page
        path = ReportPath()
        path.set_path(run.get_path())

        # set cls.driver, it must be call before operate on any page
        base_page = BasePage()
        if 'ip' in run.get_device():
            base_page.set_driver(run.get_device()['ip'])
        else:
            base_page.set_driver(run.get_device()['serial'])

        try:
            # run cases
            base_page.d.shell('logcat -c')  # 清空logcat
            if cases:
                run.run_cases(cases)
            Maxim().run_monkey(monkey_shell=command,
                               actions=actions,
                               widget_black=widget_black)

            base_page.d.shell('logcat -d > /sdcard/logcat.log')
            time.sleep(1)
            base_page.d.pull('/sdcard/logcat.log',
                             os.path.join(path.get_path(), 'logcat.log'))
            base_page.d.pull('/sdcard/monkeyerr.txt',
                             os.path.join(path.get_path(), 'monkeyerr.txt'))
            base_page.d.pull('/sdcard/monkeyout.txt',
                             os.path.join(path.get_path(), 'monkeyout.txt'))

            base_page.set_original_ime()
            base_page.identify()
            if 'ip' in run.get_device():
                log.i('release device %s ' % run.get_device()['serial'])
                atxserver2().release_device(run.get_device()['serial'])

        except AssertionError as e:
            log.e('AssertionError, %s', e)
Example #6
0
    def _run_cases(run, cases, retry, save_last_try):
        log = Log()
        log.set_logger(run.get_device()['model'],
                       run.get_path() + '/' + 'client.log')
        log.i('udid: %s' % run.get_device()['udid'])

        # set cls.path, it must be call before operate on any page
        path = ReportPath()
        path.set_path(run.get_path())

        # set cls.driver, it must be call before operate on any page
        base_page = BasePage()
        if 'ip' in run.get_device():
            base_page.set_driver(run.get_device()['ip'])
        else:
            base_page.set_driver(run.get_device()['serial'])

        try:
            # print(run.get_device())
            # 运行前准备
            base_page.unlock_device()
            base_page.set_fastinput_ime()  # 设置fastime输入法
            # base_page.d.shell('logcat -c')  # 清空logcat
            # 开始执行测试
            run.run(cases, retry, save_last_try)

            # 结束后操作
            base_page.unwatch_device()
            base_page.set_original_ime()

            # 将logcat文件上传到报告
            # base_page.d.shell('logcat -d > /sdcard/logcat.log')
            # time.sleep(2)
            # base_page.d.pull('/sdcard/logcat.log', os.path.join(path.get_path(), 'logcat.log'))

            if 'ip' in run.get_device():
                log.i('release device %s ' % run.get_device()['serial'])
                atxserver2().release_device(run.get_device()['serial'])

        except AssertionError as e:
            log.e('AssertionError, %s' % e)
def data():
    path = file_path + "\" + "case{0}.xlsx".format(aa)
    listid, listname, listkey, listconeent, listparam_place, listurl, listfangshi, listqiwang1, listname, listqiwang2=datacel(path)
    make_data1 = []
    try:
        for i in range(len(listid)):
            make_data.append({'url': listurl[i], 'listname': listname[i],  'key': listkey[i], 'coneent':listconeent[i], 'param_place': listparam_place[i],
                              'fangshi': listfangshi[i], 'expect1': listqiwang1[i], 'expect2': listqiwang2[i]})
            i += 1
        return make_data1
    except:
        Log().error('打开测试用例失败,原因是:%s' % Exception)
Example #8
0
 def testCase(self, data_test):
     expect_one = dict(assertre(asserqingwang=data_test['expect1']))
     expect_two = dict(assertre(asserqingwang=data_test['expect2']))
     data1 = list(expect_two.keys())[0]  #传递给实际值所要的key值,如task
     Log().info('获取用例数据:%s' % data_test)
     apijson = TestApi(url=data_test['url'],
                       key=data_test['key'],
                       connent=data_test['coneent'],
                       fangshi=data_test['fangshi'],
                       assertdata=data1,
                       param_place=data_test['param_place']).testapi()
     Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' %
                (data_test['url'], data_test['key'], data_test['coneent'],
                 data_test['fangshi']))
     #apijson = dict(api.getJson())
     # Log().info('返回实际结果:%s' % apijson)
     try:
         self.assertEqual(int(expect_one['code']),
                          apijson[0],
                          msg='预期和返回不一致')
         Log().info('对【code】断言,断言结果--预期值%s == 实际值%s' %
                    (expect_one['code'], apijson[0]))
     except:
         Log().warning('对【code】断言,断言结果--预期值%s != 实际值%s' %
                       (expect_one['code'], apijson[0]))
         raise
     if data1 != "param":
         try:
             self.assertEqual(expect_two[data1], apijson[1], msg='预期和返回不一致')
             Log().info('对【%s】字段断言,断言结果--预期值%s == 实际值%s' %
                        (data1, expect_two[data1], apijson[1]))
         except:
             Log().warning('对【%s】字段断言,断言结果--预期值%s != 实际值%s' %
                           (data1, expect_two[data1], apijson[1]))
             raise
Example #9
0
def assert_in(asserqiwang, fanhuijson):
    if len(asserqiwang.split('=')) > 1:
        data = asserqiwang.split('&')
        result = dict([(item.split('=')) for item in data])
        value1 = ([(str(fanhuijson[key])) for key in result.keys()])
        value2 = ([(str(value)) for value in result.values()])
        if value1 == value2:
            return {'code': 0, "result": 'pass'}
        else:
            return {'code': 1, 'result': 'fail'}
    else:
        Log().info('填写测试预期值')
        return {"code": 2, 'result': '填写测试预期值'}
Example #10
0
def makedata():
    #import os
    #path = os.getcwd() + '\\test_case_data\\case.xlsx'
    #path = globalparam.data_path + "\\" + "case.xlsx"
    path = globalparam.data_path + "/" + "case.xlsx"
    listid, listname, listkey, listconeent, listparam_place, listurl, listfangshi, listqiwang1, listname, listqiwang2 = datacel(
        path)
    make_data = []
    try:
        for i in range(len(listid)):
            make_data.append({
                'url': listurl[i],
                'listname': listname[i],
                'key': listkey[i],
                'coneent': listconeent[i],
                'param_place': listparam_place[i],
                'fangshi': listfangshi[i],
                'expect1': listqiwang1[i],
                'expect2': listqiwang2[i]
            })
            i += 1
        return make_data
    except:
        Log().error('打开测试用例失败,原因是:%s' % Exception)
Example #11
0
import unittest

import ddt

from Public.expect import assertre
from Public.get_excel import makedata
from Public.log import Log
from Public.select_request import TestApi

data_test = makedata()
logger = Log()


def my_print(msg):
    logger.info(msg)


@ddt.ddt
class MyTest(unittest.TestCase):
    def setUp(self):
        my_print('测试用例开始执行')

    def tearDown(self):
        my_print('测试用例执行完毕')

    @ddt.data(*data_test)
    def test_api(self, data_test):
        my_print('获取用例数据:%s' % data_test)
        api = TestApi(url=data_test['url'],
                      key=data_test['key'],
                      connent=data_test['coneent'],
Example #12
0
 def setUp(self):
     Log().info('测试用例开始执行')
Example #13
0
 def tearDown(self):
     Log().info('测试用例执行完毕')
     Log().info('----------------------------------')
Example #14
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# from Public.basepage import BasePage
# from uiautomator2 import UiObjectNotFoundError
from Public.decorator import *
from Public.log import Log
from Demo import dm_config
import json
from Public.filetools import read_file
package = json.loads(read_file(dm_config.info_path))['package']
log = Log()


class baidu_page(BasePage):
    @teststep
    def set_text(self, text="西湖"):
        log.i('搜索栏输入%s' % text)
        self.d(resourceId="index-kw",
               className="android.widget.EditText").set_text(text)

    @teststep
    def click_search_btn(self):
        log.i('点击百度一下搜索按钮')
        self.d(text=u"百度一下", className="android.widget.Button").click()
# -*- coding: utf-8 -*-
import requests, json
from Public.log import Log
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import tostring
import xml.etree.ElementTree as ET
logger = Log()

def my_print(msg):
    logger.info(msg)

class requ():
    def __init__(self):
        self.headers = {
            "User-Agent":
            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:51.0) Gecko/20100101 Firefox/51.0"
        }
    def dict_to_xml(self, tag, d):
        #tag为头尾标签,d传入字典
        elem = Element(tag)
        for key, val in d.items():
            child = Element(key)
            child.text = str(val)
            elem.append(child)
        return elem
    def xml_to_dict(self, xml_str):
        msg = {}
        root_elem = ET.fromstring(xml_str)
        for ch in root_elem:
            msg[ch.tag] = ch.text
Example #16
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time
from Public.basepage import BasePage
from Public.decorator import *
from Demo.Page.home import home_page
from Demo.Page import login
import unittest
import json
from Public.filetools import read_file
from Demo import dm_config
log = Log()
pkg_name = json.loads(read_file(dm_config.info_path))['package']
apkpath = json.loads(read_file(dm_config.info_path))['apk_path']

# @unittest.skip
class TestBootStrap(unittest.TestCase, BasePage):
    '''BootStrap demo测试'''

    @classmethod
    @setupclass
    def setUpClass(cls):
        cls.d.app_start("com.github.android_app_bootstrap")  # restart app

    @classmethod
    @teardownclass
    def tearDownClass(cls):
        cls.d.app_stop("com.github.android_app_bootstrap")  # restart app
        # cls.set_original_ime()
Example #17
0
import os
import time
import uiautomator2 as u2
from uiautomator2 import UiObjectNotFoundError
import re
from Public.reportpath import ReportPath
from Public.test_data import get_apk_info
from Public.config import internalapp, unlock_apk
# from Public.chromedriver import ChromeDriver
# from Public.ports import Ports

from Public.log import Log

log = Log()


class BasePage(object):
    @classmethod
    def set_driver(cls, dri):
        cls.d = u2.connect(dri)
        # cls.d.debug = True
        # cls.d.implicitly_wait(10.0)

    def get_driver(self):
        return self.d

    @classmethod
    def local_install(cls, apk_path, clear=False, uninstall=True):
        '''
        安装本地apk 覆盖安装,不需要usb链接
        :param apk_path: apk文件本地路径