def __init__(self):
        if self.__inited is None:
            self.demoProjectConfig = API_DemoProject_Read_Config().config
            self.demoProjectDBClients = API_DemoProject_DB_Clients()
            self.doRequest = DoRequest(self.demoProjectConfig.url)

            self.__inited = True
 def __init__(self, url: str, username: str, password: str):
     self.url = url
     self.username = username
     self.password = password
     self.url = urljoin(self.url, '/api/v3')
     self.doRequest = DoRequest(self.url)
     self.private_token = self._get_private_token()
     self._path_private_token = '?private_token=%s' % self.private_token
示例#3
0
    def __init__(self):
        if self.__inited is None:
            self.demoProjectConfig = DemoProjectReadConfig().config
            self.demoProjectDBClients = DemoProjectDBClients()
            self.doRequest = DoRequest(self.demoProjectConfig.url)
            self.csrftoken = self._initCsrftoken()

            self.__inited = True
示例#4
0
 def _delete_last_device_session(self, device_desc):
     if os.path.exists('config/app_ui_tmp/%s_session' % device_desc):
         with open('config/app_ui_tmp/%s_session' % device_desc, 'r') as f:
             last_session = f.read()
             last_session = last_session.strip()
             if last_session:
                 doRequest = DoRequest(self._appium_hub)
                 doRequest.setHeaders({'Content-Type': 'application/json'})
                 httpResponseResult = doRequest.delete('/session/' +
                                                       last_session)
示例#5
0
 def __init__(self,
              url: str,
              username: str,
              password: str,
              is_verify_ssl_cer=True):
     self.url = url
     self.username = username
     self.password = password
     self.doRequest = DoRequest(self.url)
     self.doRequest.setVerify(is_verify_ssl_cer)
     self._login()
示例#6
0
 def __init__(self, driver, appium_hub):
     self._doRequest = DoRequest(appium_hub)
     self._doRequest.setHeaders({'Content-Type': 'application/json'})
     self._driver = driver
     self._session_id = driver.session_id
     # 获得设备支持的性能数据类型
     self._performance_types = ujson.loads(
         self._doRequest.post_with_form(
             '/session/' + self._session_id +
             '/appium/performanceData/types').body)['value']
     # 获取当前窗口大小
     self._windows_size = self.get_window_size()
                        type=str)
    parser.add_argument('-r', '--reruns', help='失败重跑次数,默认为0', type=str)
    parser.add_argument('-lf',
                        '--lf',
                        help='是否运行上一次失败的用例,1:是、0:否,默认为0',
                        type=str)
    parser.add_argument('-clr',
                        '--clr',
                        help='是否清空已有测试结果,1:是、0:否,默认为0',
                        type=str)
    args = parser.parse_args()

    print('%s开始初始化......' % DateTimeTool.getNowTime())
    print('%s开始检测selenium server是否可用......' % DateTimeTool.getNowTime())
    try:
        doRquest = DoRequest(Read_WEB_UI_Config().web_ui_config.selenium_hub)
        httpResponseResult = doRquest.get('/status')
        result = ujson.loads(httpResponseResult.body)
        if result['status'] == 0:
            print('%sselenium server状态为可用......' % DateTimeTool.getNowTime())
        else:
            sys.exit('%sselenium server状态为不可用' % DateTimeTool.getNowTime())
    except:
        sys.exit('%sselenium server状态为不可用' % DateTimeTool.getNowTime())

    # 处理pytest文件
    deal_pytest_ini_file()

    # 初始化java依赖的libs
    java_maven_init()
示例#8
0
 def __init__(self,webhook:str,secret_key:str=None):
     self.webhook=webhook
     self.secret_key=secret_key
     self.doRequest=DoRequest(self.webhook)
     self.doRequest.setHeaders({'Content-Type':'application/json'})
示例#9
0
def start_app_device_test(index,device_info,keyword,dir,markexpr,capture,reruns,lf,clr):
    for path, dirs, files in os.walk('config/app_ui_tmp'):
        for file in files:
            if(int(file)==index):
                os.rename(os.path.join(path,file),os.path.join(path,str(os.getpid())))

    print('%s开始检测appium server是否可用......'%DateTimeTool.getNowTime())
    try:
        doRquest = DoRequest('http://'+device_info['server_ip']+':%s/wd/hub'%device_info['server_port'].strip())
        httpResponseResult = doRquest.get('/status')
        result = ujson.loads(httpResponseResult.body)
        if result['status'] == 0:
            print('%sappium server状态为可用......'%DateTimeTool.getNowTime())
        else:
            sys.exit('%sappium server状态为不可用'%DateTimeTool.getNowTime())
    except:
        print('%sappium server状态为不可用'%DateTimeTool.getNowTime())
        raise Exception('%sappium server状态为不可用'%DateTimeTool.getNowTime())

    a_devices_desired_capabilities = device_info['capabilities']
    print('%s开始设备%s测试......'%(DateTimeTool.getNowTime(),device_info['device_desc']))
    print('%s当前设备所需测试的desired_capabilities为:%s'%(DateTimeTool.getNowTime(),a_devices_desired_capabilities))
    for desired_capabilities in a_devices_desired_capabilities:
        FileTool.writeObjectIntoFile(desired_capabilities,'config/app_ui_tmp/'+str(os.getpid())+'_current_desired_capabilities')
        desired_capabilities_desc=None
        if 'appPackage' in desired_capabilities.keys():
            desired_capabilities_desc = desired_capabilities['appPackage']
        elif 'app' in desired_capabilities.keys():
            desired_capabilities_desc = desired_capabilities['app'].split('/')[-1]
        elif 'bundleId' in desired_capabilities.keys():
            desired_capabilities_desc = desired_capabilities['bundleId']
        print('%s当前设备开始测试的desired_capabilities为:%s'%(DateTimeTool.getNowTime(),desired_capabilities))
        # 执行pytest前的参数准备
        pytest_execute_params = ['-c', 'config/pytest.ini', '-v', '--alluredir', 'output/app_ui/%s/%s/report_data/'%(device_info['device_desc'],desired_capabilities_desc)]
        # 判断目录参数
        if not dir:
            dir = 'cases/app_ui/'
        # 判断关键字参数
        if keyword:
            pytest_execute_params.append('-k')
            pytest_execute_params.append(keyword)
        # 判断markexpr参数
        if markexpr:
            pytest_execute_params.append('-m')
            pytest_execute_params.append(markexpr)
        # 判断是否输出日志
        if capture:
            if int(capture):
                pytest_execute_params.append('-s')
        # 判断是否失败重跑
        if reruns:
            if int(reruns):
                pytest_execute_params.append('--reruns')
                pytest_execute_params.append(reruns)
        # 判断是否只运行上一次失败的用例
        if lf:
            if int(lf):
                pytest_execute_params.append('--lf')
        # 判断是否清空已有测试结果
        if clr:
            if int(clr):
                pytest_execute_params.append('--clean-alluredir')
        pytest_execute_params.append(dir)
        # 构建孙进程
        process = multiprocessing.Process(target=pytest_main,args=(pytest_execute_params,))
        process.start()
        process.join()
        print('%s当前设备结束测试的desired_capabilities为:%s' % (DateTimeTool.getNowTime(),desired_capabilities))
    print('%s结束设备%s测试......'%(DateTimeTool.getNowTime(),device_info['device_desc']))
示例#10
0
import pytest
import sys

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-k',
                        '--keyword',
                        help='只执行匹配关键字的用例,会匹配文件名、类名、方法名',
                        type=str)
    parser.add_argument('-d', '--dir', help='指定要测试的目录', type=str)
    args = parser.parse_args()

    print '开始初始化......'
    print '开始检测selenium server是否可用......'
    try:
        doRquest = DoRequest(ReadConfig().config.selenium_hub)
        httpResponseResult = doRquest.get('/status')
        result = json.loads(httpResponseResult.body)
        if result['status'] == 0:
            print 'selenium server状态为可用......'
        else:
            sys.exit('selenium server状态为不可用')
    except:
        sys.exit('selenium server状态为不可用')

    print '初始化基础数据......'
    init()
    print '初始化基础数据完成......'
    print '初始化完成......'

    print '开始测试......'
示例#11
0
 def __init__(self, url: str, access_token: str):
     self.url = url
     self.access_token = access_token
     self.url = urljoin(self.url, '/api/v4')
     self.doRequest = DoRequest(self.url)
     self.doRequest.updateHeaders({'PRIVATE-TOKEN': self.access_token})
示例#12
0
import jpype
import json
import pytest
import sys

if __name__=='__main__':
    parser=argparse.ArgumentParser()
    parser.add_argument('-k','--keyword',help='只执行匹配关键字的用例,会匹配文件名、类名、方法名',type=str)
    parser.add_argument('-d','--dir',help='指定要测试的目录',type=str)
    parser.add_argument('-s', '--capture', help='是否在标准输出流中输出日志,1:是、0:否')
    args=parser.parse_args()

    print('开始初始化......')
    print('开始检测appium server是否可用......')
    try:
        doRquest=DoRequest(Read_APP_UI_Config().app_ui_config.appium_hub)

        httpResponseResult=doRquest.get('/status')
        result=json.loads(httpResponseResult.body)
        if result['status']==0:
            print('appium server状态为可用......')
        else:
            sys.exit('appium server状态为不可用')
    except:
        sys.exit('appium server状态为不可用')

    print('启动jvm......')
    jpype.startJVM(jpype.get_default_jvm_path(),"-ea","-Djava.class.path="+JavaTool.getAllJar())
    print('启动jvm成功')

    java_maven_init()
示例#13
0
 def __init__(self, webhook: str):
     self.webhook = webhook
     self.doRequest = DoRequest(self.webhook)
     self.doRequest.setVerify(False)
     self.doRequest.setHeaders({'Content-Type': 'application/json'})
示例#14
0
import pytest
import sys

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-k',
                        '--keyword',
                        help='只执行匹配关键字的用例,会匹配文件名、类名、方法名',
                        type=str)
    parser.add_argument('-d', '--dir', help='指定要测试的目录', type=str)
    args = parser.parse_args()

    print '开始初始化......'
    print '开始检测appium server是否可用......'
    try:
        doRquest = DoRequest(ReadConfig().config.appium_hub)

        httpResponseResult = doRquest.get('/status')
        result = json.loads(httpResponseResult.body)
        if result['status'] == 0:
            print 'appium server状态为可用......'
        else:
            sys.exit('appium server状态为不可用')
    except:
        sys.exit('appium server状态为不可用')

    print '启动jvm......'
    jpype.startJVM(jpype.get_default_jvm_path(), "-ea",
                   "-Djava.class.path=" + JavaTool.getAllJar())
    print '启动jvm成功'
示例#15
0
 def __init__(self,url:str,username:str,password:str):
     self.url=url
     self.username=username
     self.password=password
     self.doRequest=DoRequest(self.url)
     self._login()
示例#16
0
def start_app_device_test(index,device_info,keyword,dir,markexpr,capture,reruns,lf):
    for path, dirs, files in os.walk('config/app_ui_tmp'):
        for file in files:
            if(int(file)==index):
                os.rename(os.path.join(path,file),os.path.join(path,str(os.getpid())))

    print('开始检测appium server是否可用......')
    try:
        doRquest = DoRequest('http://'+device_info['server_ip']+':%s/wd/hub'%device_info['server_port'].strip())
        httpResponseResult = doRquest.get('/status')
        result = ujson.loads(httpResponseResult.body)
        if result['status'] == 0:
            print('appium server状态为可用......')
        else:
            sys.exit('appium server状态为不可用')
    except:
        sys.exit('appium server状态为不可用')

    a_devices_desired_capabilities = device_info['capabilities']
    print('开始设备' + device_info['device_desc'] + '测试......')
    for desired_capabilities in a_devices_desired_capabilities:
        FileTool.writeObjectIntoFile(desired_capabilities,
                                     'config/app_ui_tmp/' + str(os.getpid()) + '_current_desired_capabilities')
        if desired_capabilities['appPackage']:
            desired_capabilities_desc = desired_capabilities['appPackage']
        else:
            desired_capabilities_desc = os.path.basename(desired_capabilities['app'])
        print('当前设备开始测试的desired_capabilities为:%s' % desired_capabilities)
        # 执行pytest前的参数准备
        pytest_execute_params = ['-c', 'config/pytest.ini', '-v', '--alluredir',
                                 'output/app_ui/' + device_info['device_desc'] + '/' + desired_capabilities_desc]
        # 判断目录参数
        if not dir:
            dir = 'cases/app_ui/'
        # 判断关键字参数
        if keyword:
            pytest_execute_params.append('-k')
            pytest_execute_params.append(keyword)
        # 判断markexpr参数
        if markexpr:
            pytest_execute_params.append('-m')
            pytest_execute_params.append(markexpr)
        # 判断是否输出日志
        if capture:
            if int(capture):
                pytest_execute_params.append('-s')
        # 判断是否失败重跑
        if reruns:
            if int(reruns):
                pytest_execute_params.append('--reruns')
                pytest_execute_params.append(reruns)
        # 判断是否只运行上一次失败的用例
        if lf:
            if int(lf):
                pytest_execute_params.append('--lf')
        pytest_execute_params.append(dir)
        # 构建孙进程
        process = multiprocessing.Process(target=pytest_main, args=(pytest_execute_params,))
        process.start()
        process.join()
        print('当前设备结束测试的desired_capabilities为:%s' % desired_capabilities)
    print('结束设备' + device_info['device_desc'] + '测试......')
示例#17
0
 def __init__(self, url):
     self._url = url
     self._doRequest = DoRequest(self._url)
     self._doRequest.setProxies({'http': '127.0.0.1:8888'})
示例#18
0
    def __init__(self):
        self.demoProjectConfig=DemoProjectInit().getDemoProjectConfig()
        self.doRequest=DoRequest(self.demoProjectConfig.url)
        self.csrftoken=None

        self._initCsrftoken()