Exemple #1
0
    def test_deriving(self):
        self.reset_class_settings(DummyChild)
        child = DummyChild()
        self.assertEqual(child.settings.DUMMY_A, 2)
        self.assertEqual(child.settings.DUMMYCHILD_A, 2)

        with modify_settings(DUMMY_A=3):
            self.reset_class_settings(Dummy)
            dummy = Dummy()
            self.assertEqual(dummy.settings.DUMMY_A, 3)

            self.reset_class_settings(DummyChild)
            child = DummyChild()
            self.assertEqual(child.settings.DUMMY_A, 3)

        with modify_settings(DUMMYCHILD_A=4):
            self.reset_class_settings(DummyChild)
            child = DummyChild()
            self.assertEqual(child.settings.DUMMY_A, 4)
            self.assertEqual(child.settings.DUMMYCHILD_A, 4)

        self.assertRaises(RuntimeError, DummyChild2)

        child = DummyChild3()
        self.assertEqual(child.settings.DUMMYCHILD3_B, -1)
        self.assertRaises(AttributeError, getattr, child.settings, "DUMMYCHILD3_A")
Exemple #2
0
    def test_global_overwrite_attrs(self):
        class Demo(TestCase):
            owner = "xxx"
            timeout = 1
            priority = TestCase.EnumPriority.BVT
            status = TestCase.EnumStatus.Design

            def run_test(self):
                pass

        data_source = [0, 1, 2]
        with modify_settings(DATA_DRIVE=True, DATA_SOURCE=data_source):
            drive_data = TestDataLoader().load()
            self.assertEqual(len(drive_data), len(data_source))

            tests = datadrive.load_datadrive_tests(Demo)
            self.assertEqual(len(tests), len(data_source))
            for index, test in enumerate(tests):
                self.assertEqual(test.casedataname, str(index))
                self.assertEqual(test.casedata, data_source[index])

            tests = datadrive.load_datadrive_tests(Demo, 1)
            self.assertEqual(len(tests), 1)
            self.assertEqual(tests[0].casedataname, str(1))
            self.assertEqual(tests[0].casedata, 1)

        data_map = [("a", "owner", "a"), ("b", "timeout", 10),
                    ("c", "priority", TestCase.EnumPriority.BVT),
                    ("d", "status", TestCase.EnumStatus.Implement),
                    ("e", "__doc__", "e"), ("f", "tags", set(["abc"])),
                    ("g", "tags", set(["a", "b", "c"]))]
        data_source = {}
        for char, field, value in data_map:
            data_source[char] = {
                "data_%s" % char: char,
                "__attrs__": {
                    field: value
                }
            }

        with modify_settings(DATA_DRIVE=True, DATA_SOURCE=data_source):
            tests = datadrive.load_datadrive_tests(Demo)
            self.assertEqual(len(tests), len(data_map))
            for char, field, value in data_map:
                test = datadrive.load_datadrive_tests(Demo, char)[0]
                self.assertEqual(test.casedataname, char)
                self.assertEqual(test.casedata["data_%s" % char], char)
                if field == "__doc__":
                    field = "test_doc"
                field_value = getattr(test, field)
                self.assertEqual(field_value, value)
Exemple #3
0
 def test_disable_rewrite_assert(self):
     with modify_settings(QTAF_REWRITE_ASSERT=False):
         case = AssertionFailureTest()
         old_run_test_code = case.run_test.__func__.__code__
         case.debug_run()
         self.assertEqual(case.test_result.passed, False, "禁用重写assert,用例没有失败")
         self.assertEqual(self.is_func_rewritten(case.run_test, old_run_test_code), False, "禁用重写assert,assert_被重写了")
Exemple #4
0
 def test_disable_assert_failed_continue(self):
     with modify_settings(QTAF_ASSERT_CONTINUE=False):
         case = AssertionFailureTest()
         case.debug_run()
         self.assertEqual(case.test_result.passed, False, "断言失败退出执行,用例没有失败")
         self.assertEqual(len(case.test_result._step_results), 1,
                          u"设置了断言失败退出执行,但是用例仍继续执行")
Exemple #5
0
 def test_parameter_without_add_params(self):
     from tests.sampletest.paramtest import ParamTestWithoutAddParams
     with modify_settings(QTAF_PARAM_MODE=True):
         tc = ParamTestWithoutAddParams(attrs={"test": 200, "test1": 1000})
         tc.debug_run()
         self.assertNotIn('test', tc.__dict__)
         self.assertNotIn('test1', tc.__dict__)
Exemple #6
0
 def test_parameter_rewrite(self):
     from tests.sampletest.paramtest import ParamTest
     with modify_settings(QTAF_PARAM_MODE=True):
         tc = ParamTest(attrs={"test": 200, "test1": 1000})
         tc.debug_run()
         self.assertEqual(tc.test, 200)
         self.assertEqual(tc.test1, 1000)
Exemple #7
0
 def test_parameter(self):
     from tests.sampletest.paramtest import ParamTest
     with modify_settings(QTAF_PARAM_MODE=True):
         tc = ParamTest()
         tc.debug_run()
         self.assertEqual(tc.test, 100)
         self.assertEqual(tc.test1, 100)
Exemple #8
0
    def test_skip_runtest_while_failed(self):
        class Hello(TestCase):
            """tag test"""
            owner = "xxx"
            timeout = 1
            priority = TestCase.EnumPriority.BVT
            status = TestCase.EnumStatus.Design

            def init_test(self, testresult):
                self.steps = ["init_test"]

            def pre_test(self):
                self.steps.append("pre_test")
                raise RuntimeError('runtime error')

            def run_test(self):
                self.steps.append("run_test")

            def post_test(self):
                self.steps.append("post_test")

            def clean_test(self):
                self.steps.append("clean_test")

        with modify_settings(QTAF_FAILED_SKIP_RUNTEST=True):
            hello = Hello()
            hello.debug_run()
            self.assertEqual(
                hello.steps,
                ["init_test", "pre_test", "post_test", "clean_test"])
Exemple #9
0
    def test_get(self):
        dummy = self.Dummy()
        self.assertEqual(dummy.settings.DUMMY_A, 0)

        self.assertRaises(AttributeError, getattr, dummy.settings, "B")

        with modify_settings(GLOBAL_X="xxxx", DUMMY_A=100):
            self.assertEqual(dummy.settings.GLOBAL_X, "xxxx")
            self.assertEqual(dummy.settings.DUMMY_A, 100)
Exemple #10
0
 def test_deriving(self):
     self.reset_class_settings(DummyChild)
     child = DummyChild()
     self.assertEqual(child.settings.DUMMY_A, 2)
     self.assertEqual(child.settings.DUMMYCHILD_A, 2)
     
     with modify_settings(DUMMY_A=3):
         self.reset_class_settings(Dummy)
         dummy = Dummy()
         self.assertEqual(dummy.settings.DUMMY_A, 3)
         
         self.reset_class_settings(DummyChild)
         child = DummyChild()
         self.assertRaises(ValueError, getattr, child, "settings")
         
     with modify_settings(DUMMYCHILD_A=4):
         self.reset_class_settings(DummyChild)
         self.assertEqual(child.settings.DUMMY_A, 4)
         self.assertEqual(child.settings.DUMMYCHILD_A, 4)
Exemple #11
0
 def test_config_file_with_global_parameters(self):
     with modify_settings(QTAF_PARAM_MODE=True):
         working_dir = "test_online_report_%s" % get_time_str()
         cmdline = 'runtest --config-file tests/sampletest/test_global_parameters.json'
         cmdline += " -w " + working_dir
         self.addCleanup(shutil.rmtree, working_dir, ignore_errors=True)
         sys.argv = ["qtaf"]
         sys.argv.extend(cmdline.split())
         exitcode = ManagementTools().run()
         self.assertEqual(exitcode, 0)
Exemple #12
0
 def test_load_testcasedict(self):
     testcases = [{
         "name": "tests.sampletest.paramtest.ParamTest",
         "parameters": {
             "test": 200,
             "test1": 400
         }
     }]
     with modify_settings(QTAF_PARAM_MODE=True):
         tests = self.loader.load(testcases)
         self.assertEqual(len(tests), 1)
         self.assertEqual(tests[0].test, 200)
Exemple #13
0
    def test_set_resolver(self):
        mod = sys.modules["qt4s.domain"]
        setattr(mod, "__qt4s_resolvers", [])  # reset resolvers
        with modify_settings(QT4S_DOMAIN_RESOLVERS=[
                "tests.test_domain_resolve.FooDomainResolver"
        ]):
            ip, _ = resolve("www.set-resolver.com")
            self.assertEqual(ip, "192.168.1.1")

            ip, _ = resolve("unknown.com")
            self.assertEqual(ip, "unknown.com")

            add_name("unknown.com", "172.16.1.1")
            ip, _ = resolve("unknown.com")
            self.assertEqual(ip, "172.16.1.1")
        setattr(mod, "__qt4s_resolvers", [])  # reset resolvers
Exemple #14
0
    def test_global_data_reversible(self):
        from tests.data import server
        with modify_settings(DATA_DRIVE=True,
                             DATA_SOURCE='tests/data/server.py'):
            tests = TestLoader().load("tests.sampletest.hellotest.HelloTest")
            self.assertEqual(len(tests), 3)
            casedata = set()
            for test in tests:
                self.assertEqual(test.test_class_name,
                                 "tests.sampletest.hellotest.HelloTest")
                casedata.add(str(test.casedata))
            self.assertEqual(casedata, set([str(it) for it in server.DATASET]))

            test_set = " ".join(map(lambda x: x.test_name, tests)).split()
            loader = TestLoader()
            new_tests = loader.load(test_set)
            self.assertEqual(len(new_tests), len(tests))