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")
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)
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_被重写了")
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"设置了断言失败退出执行,但是用例仍继续执行")
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__)
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)
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)
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"])
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)
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)
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)
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)
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
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))