Beispiel #1
0
def open(step):
    element = step['element']
    value = e.get(element)[1]
    if step['data'].get('清理缓存', '') or step['data'].get('clear', ''):
        g.driver.delete_all_cookies()
    if step['data'].get('打开方式', '') == '新标签页' or step['data'].get('mode', '').lower() == 'tab':
        js = "window.open('%s')" % value
        g.driver.execute_script(js)
        # 判断是否打开了新的窗口,并将新窗口添加到所有窗口列表里
        all_handles = g.driver.window_handles
        for handle in all_handles:
            if handle not in w.windows.values():
                w.register(step, handle)
    else:
        if step['data'].get('打开方式', '') == '新浏览器' or step['data'].get('mode', '').lower() == 'browser':
            w.close()
            g.set_driver()
            w.init()
        g.driver.get(value)
        w.open(step)
    cookie = step['data'].get('cookie', '')
    if cookie:
        g.driver.add_cookie(json2dict(cookie))
        co = g.driver.get_cookie(json2dict(cookie).get('name', ''))
        logger.info(f'cookie is add: {co}')
    sleep(0.5)
Beispiel #2
0
def open(step):
    element = step['element']
    if g.exist == 0:
        g.set_driver()
        w.init()
    if element == '浏览器' or element.lower() == 'browser':
        return 0
    el, value = get_elem(element)
    if step['data'].get('清理缓存', '') or step['data'].get('cookie', ''):
        g.driver.delete_all_cookies()
    if step['data'].get('打开方式', '') == '新标签页' or step['data'].get(
            'mode', '').lower() == 'tab':
        js = "window.open('%s')" % value
        g.driver.execute_script(js)
        # 判断是否打开了新的窗口,并将新窗口添加到所有窗口列表里
        all_handles = g.driver.window_handles
        for handle in all_handles:
            if handle not in w.pages.values():
                w.register(step, handle)
    else:
        if step['data'].get('打开方式', '') == '新浏览器' or step['data'].get(
                'mode', '').lower() == 'browser':
            w.close()
            g.set_driver()
            w.init()
        g.driver.get(value)
        w.open(step)
    sleep(0.5)
    return 1
Beispiel #3
0
    def run(self, sheet_name):
        # 1.从 Excel 获取测试用例集
        try:
            data = self.testcase_workbook.read(sheet_name)
            testsuite = testsuite_format(data)
            # logger.info('Testsuite imported from Excel:\n' +
            #             json.dumps(testsuite, ensure_ascii=False, indent=4))
            logger.info('From Excel import testsuite success')
        except:
            logger.exception('*** From Excel import testsuite fail ***')
            self.code = -1
            sys.exit(self.code)

        # 2.初始化全局对象
        try:
            g.init(self.desired_caps, self.server_url)
            g.set_driver()
            # 如果测试数据文件存在,则从该文件里读取一行数据,赋值到全局变量列表里
            data_file = path.join('data',
                                  g.project_name + '-' + sheet_name + '.csv')
            if path.exists(data_file):
                g.var = get_record(data_file)
            data_file = path.join(
                'data', g.project_name + '-' + sheet_name + '-globle.txt')
            if path.exists(data_file):
                g.var.update(get_all_record(data_file))
            w.init()
        except:
            logger.exception('*** Init global object fail ***')
            self.code = -1
            sys.exit(self.code)

        # 3.解析测试用例集
        try:
            parse(testsuite)
            logger.debug('testsuite has been parsed:\n' + str(testsuite))
        except:
            logger.exception('*** Parse testsuite fail ***')
            self.code = -1
            sys.exit(self.code)

        # 4.执行测试套件
        ts = TestSuite(testsuite, self.report_ts[sheet_name], self.conditions)
        ts.run()

        # 5.判断测试结果
        if self.report_ts[sheet_name].high_errors + self.report_ts[sheet_name].medium_errors + \
                self.report_ts[sheet_name].high_failures + self.report_ts[sheet_name].medium_failures:
            self.code = -1

        # 6.保存测试结果
        try:
            self.report_data[sheet_name] = testsuite2report(testsuite)
            data = testsuite2data(testsuite)
            self.report_workbook.write(data, sheet_name)
        except:
            logger.exception('*** Save the report is fail ***')
Beispiel #4
0
    def run(self, sheet_name):
        # 1.从 Excel 获取测试用例集
        try:
            data = self.testcase_workbook.read(sheet_name)
            testsuite = testsuite_format(data)
            # logger.info('Testsuite imported from Excel:\n' +
            #             json.dumps(testsuite, ensure_ascii=False, indent=4))
            logger.info('From Excel import testsuite success')
        except:
            logger.exception('*** From Excel import testsuite failure ***')
            self.code = -1
            sys.exit(self.code)

        # 2.初始化全局对象
        try:
            g.set_driver()
            # 如果测试数据文件存在,则从该文件里读取数据,赋值到全局变量列表里
            data_file = Path('data') / (g.plan_name + '-' + sheet_name +
                                        '.csv')
            if data_file.is_file():
                g.test_data = get_record(str(data_file))
            w.init()
        except:
            logger.exception('*** Init global object failure ***')
            self.code = -1
            sys.exit(self.code)

        # 3.解析测试用例集
        try:
            parse(testsuite)
            logger.debug('testsuite has been parsed:\n' + str(testsuite))
        except:
            logger.exception('*** Parse testsuite failure ***')
            self.code = -1
            sys.exit(self.code)

        # 4.执行测试套件
        g.ts = TestSuite(testsuite, sheet_name, self.junit_suite[sheet_name],
                         self.conditions)
        g.ts.run()

        # 5.判断测试结果
        if self.junit_suite[sheet_name].high_errors + self.junit_suite[sheet_name].medium_errors + \
                self.junit_suite[sheet_name].high_failures + self.junit_suite[sheet_name].medium_failures:
            self.code = -1

        # 6.保存测试结果
        try:
            data = testsuite2data(testsuite)
            self.report_workbook.write(data, sheet_name)
            self.report_data[sheet_name] = testsuite2report(testsuite)
        except:
            logger.exception('*** Save the report is failure ***')
Beispiel #5
0
    def ready():
        '''
        测试准备工作:解析测试用例集 -> 解析全局变量 -> 初始化浏览器和窗口 -> 初始化 unittest.testcase
        :param sheet_name: excel格式的测试用例集
        testcase 的格式:
        {
        'id': 'Login_001',                    #用例编号
        'title': 'Login OK',                  #用例标题
        'condition': '',                      #前置条件
        'designer': 'Leo',                    #设计者
        'flag': '',                           #自动化标记
        'result': '',                         #用例结果
        'remark': '',                         #备注
        'steps':
            [
                {
                'no': 1,                        #测试步骤
                'keyword': '输入',               #关键字
                'page': '产品管系统登录页',        #页面
                'custom': ,                     #frame
                'element': [元素1,元素2],         #元素
                'data': {变量1:值1,变量2:值2},    #测试数据
                'expected':{变量1:值1,变量2:值2}, #预期结果
                'output': {变量1:值1,变量2:值2},  #输出数据
                'score': '',                     #测试结果
                'remark': '',                    #备注
                'snippets': [[{},{},...],[],...] #调用的用例片段各步骤
                },
                {……}
                ……
            ]
        }

        testsuite 的格式:[testcase1,testcase2,testcase3,...]
        '''

        # 1.从 Excel 获取、解析测试用例集
        parse_suite(g.current_sheet_name)
        # 2.从 Csv 获取、解析全局变量
        parse_var(g.current_sheet_name)

        # 3.初始化浏览器和窗口
        try:
            g.set_driver()
            w.init()
        except:
            logger.exception('*** 初始化浏览器或窗口失败 ***')
            g.code = -1
            sys.exit(g.code)

        # 4.初始化 unittest.testcase
        gentest()