Ejemplo n.º 1
0
    def wait_for_match(self,
                       message,
                       obj,
                       prop_name,
                       expected,
                       timeout=10,
                       interval=0.5):
        '''每隔interval检查obj.prop_name是否和正则表达式expected是否匹配,如果在timeout时间内都不相等,则测试用例失败

        :param message: 失败时的输出信息
        :param obj: 需要检查的对象
        :type prop_name: string
        :param prop_name: 需要检查的对象的属性名, obj.prop_name返回字符串
        :param expected: 需要匹配的正则表达式
        :param timeout: 超时秒数
        :param interval: 重试间隔秒数
        :return: True or False
        '''
        for _ in Retry(timeout=timeout, interval=interval, raise_error=False):
            actual = getattr(obj, prop_name)
            if re.match(expected, actual, re.I):
                return True
        else:
            self.__record_assert_failed(message, getattr(obj, prop_name),
                                        expected)
            return False
Ejemplo n.º 2
0
    def wait_for_equal(self,
                       message,
                       obj,
                       prop_name,
                       expected,
                       timeout=10,
                       interval=0.5):
        '''每隔interval检查obj.prop_name是否和expected相等,如果在timeout时间内都不相等,则测试用例失败

        :param message: 失败时的输出信息
        :param obj: 需要检查的对象
        :type prop_name: string
        :param prop_name: 需要检查的对象的属性名,支持多层属性
        :param expected: 期望的obj.prop_name值
        :param timeout: 超时秒数
        :param interval: 重试间隔秒数
        :return: True or False
        '''
        for _ in Retry(timeout=timeout, interval=interval, raise_error=False):
            actual = getattr(obj, prop_name)
            if actual == expected:
                return True
        else:
            self.__record_assert_failed(message, getattr(obj, prop_name),
                                        expected)
            return False
Ejemplo n.º 3
0
 def _wait_driver_ready(self):
     for _ in Retry(timeout=5):
         try:
             driver = self.get_driver()
             driver.hello()
             break
         except:
             pass
Ejemplo n.º 4
0
 def run_test(self):
     self.start_step('step 1')
     self.assert_('测试__string_combain函数',
                  self.string_combain('x', 'y') == 'xy')
     self.start_step('step 2')
     # self.assert_('测试失败', False)
     self.start_step('step 3')
     for item in Retry(timeout=2, interval=0.5):
         print('start to retry...')
         self.a += 1
         if self.a > 2:
             print('a', self.a)
             break
Ejemplo n.º 5
0
    def test_retry_with_timeout(self):
        def dummy(toggle_time, start_ts):
            if time.time() - start_ts > toggle_time:
                return True

        interval = 1
        timeout = 5
        retry = Retry(interval=interval, timeout=timeout)
        self.assertRaises(ValueError, retry.call, None)

        start_time = time.time()
        try:
            retry.call(dummy, timeout + 1, start_time)
        except RetryLimitExcceeded:
            time_cost = time.time() - start_time
            self.assertGreaterEqual(
                time_cost, 5,
                "actual timeout=%s is less than specified timeout=%s" %
                (time_cost, timeout))
        else:
            self.fail("no RetryLimitExcceeded raised")

        start_time = time.time()
        count = 0
        retry = Retry(interval=interval, timeout=timeout)
        for retry_item in retry:
            count += 1
            self.assertEqual(count, retry_item.iteration,
                             "iteration does not match")
            if dummy(2, start_time):
                time_cost = time.time() - start_time
                self.assertGreaterEqual(
                    time_cost, 2,
                    "actual interval=%s is less than specified interval=%s" %
                    (time_cost / float(count), interval))
                break
        else:
            self.fail("unexpected timeout")
Ejemplo n.º 6
0
    def test_retry_with_count(self):
        def dummy(param):
            param[0] += 1
            if param[0] > 2:
                return True

        retry = Retry(limit=1)
        self.assertRaises(ValueError, retry.call, None)

        x = [0]
        try:
            retry.call(dummy, x)
        except RetryLimitExcceeded:
            pass
        else:
            self.fail("no RetryLimitExcceeded was raised")

        x = [0]
        retry = Retry(limit=3)
        try:
            retry.call(dummy, x)
        except RetryLimitExcceeded:
            self.fail("RetryLimitExcceeded was raised")

        x = [0]
        retry = Retry(limit=3, interval=None)
        retry_count = 0
        start_time = time.time()
        for retry_item in retry:
            retry_count += 1
            self.assertEqual(retry_count, retry_item.iteration,
                             "iteration does not match")
            if dummy(x):
                self.assertEqual(retry_count, 3, "iteration does not match")
                break
        time_cost = time.time() - start_time
        self.assertLess(time_cost, 0.05, "interval is unexpected")

        x = [-5]
        limit = 3
        retry = Retry(limit=limit, interval=0.5, raise_error=False)
        start_time = time.time()
        retry.call(dummy, x)
        time_cost = time.time() - start_time
        self.assertGreaterEqual(time_cost + 0.1, (limit - 1) * 0.5,
                                "interval has no effect.")
Ejemplo n.º 7
0
import form as form
from testbase.retry import Retry
from testbase.testcase import TestCase


def string_combine(param, param1):
    return param + param1


class StrCombineTest(TestCase):
    '''测试字符串拼接接口
    '''
    owner = "foo"
    status = TestCase.EnumStatus.Ready
    priority = TestCase.EnumPriority.Normal
    timeout = 1

    def run_test(self):
        # ---------------------------
        self.start_step("测试字符串拼接")
        # ---------------------------
        result = string_combine("xxX", "yy")
        self.assert_("检查string_combine调用结果", result == "xxXyy9")


if __name__ == '__main__':
    for w in Retry(timeout=2, interval=0.5, raise_error=False):

        print(w)
# StrCombineTest().debug_run()