How to use _check_test_tree_node_types method in Lemoncheesecake

Best Python code snippet using lemoncheesecake

loader.py

Source:loader.py Github

copy

Full Screen

...27def _check_links(links):28 return isinstance(links, (list, tuple)) and \29 all(isinstance(url, six.string_types) for url, _ in links) and \30 all(name is None or isinstance(name, six.string_types) for _, name in links)31def _check_test_tree_node_types(node):32 # type: (BaseTreeNode) -> None33 check_type_string("name", node.name)34 check_type_string("description", node.description)35 check_type("tags", node.tags, "List[str]", _check_tags, show_actual_type=False)36 check_type("properties", node.properties, "Dict[str, str]", _check_properties, show_actual_type=False)37 check_type("links", node.links, "List[Tuple[str, Optional[str]]]", _check_links, show_actual_type=False)38def _load_test(obj):39 md = obj._lccmetadata40 test = Test(md.name, md.description, obj)41 test.tags.extend(md.tags)42 test.properties.update(md.properties)43 test.links.extend(md.links)44 test.disabled = md.disabled45 test.hidden = md.condition and not md.condition(obj)46 test.rank = md.rank47 test.dependencies.extend(md.dependencies)48 try:49 _check_test_tree_node_types(test)50 except TypeError as excp:51 raise SuiteLoadingError("Invalid test metadata type for '%s': %s" % (test.name, excp))52 return test53def _load_parametrized_tests(obj):54 md = obj._lccmetadata55 test = _load_test(obj)56 for idx, parameters in enumerate(md.parametrized.parameters_source):57 check_type_dict("test parameters", parameters)58 parametrized_test_name, parametrized_test_description = md.parametrized.naming_scheme(59 test.name, test.description, parameters, idx+160 )61 parametrized_test = test.pull_node()62 parametrized_test.name = parametrized_test_name63 parametrized_test.description = parametrized_test_description64 parametrized_test.parameters = parameters65 yield parametrized_test66def _load_tests(objs):67 for obj in objs:68 if obj._lccmetadata.parametrized:69 for test in _load_parametrized_tests(obj):70 if not test.hidden:71 yield test72 else:73 test = _load_test(obj)74 if not test.hidden:75 yield test76def _get_test_symbols(obj, filter_func):77 return sorted(78 filter(79 filter_func, (attr for _, attr in get_object_attributes(obj))80 ),81 key=lambda sym: sym._lccmetadata.rank82 )83def _get_test_methods_from_class(obj):84 return _get_test_symbols(obj, _is_test_method)85def _get_sub_suites_from_class(obj):86 return _get_test_symbols(obj, _is_suite_class)87def _get_test_functions_from_module(mod):88 return _get_test_symbols(mod, _is_test_function)89def _get_suite_classes_from_module(mod):90 return _get_test_symbols(mod, _is_suite_class)91def _get_generated_tests(obj):92 return getattr(obj, "_lccgeneratedtests", [])93def _get_sub_dirs_from_dir(top_dir):94 paths = [os.path.join(top_dir, path) for path in os.listdir(top_dir)]95 return sorted(filter(osp.isdir, paths))96def _normalize_link(link):97 if type(link) is str:98 return link, None99 else:100 return link101def load_suite_from_class(class_):102 # type: (Any) -> Suite103 """104 Load a suite from a class.105 """106 try:107 md = class_._lccmetadata108 except AttributeError:109 raise SuiteLoadingError("Class is not declared as a suite")110 try:111 suite_obj = class_()112 except UserError as e:113 raise e # propagate UserError114 except Exception:115 raise LemoncheesecakeException("Got an unexpected error while instantiating suite class '%s':%s" % (116 class_.__name__, serialize_current_exception()117 ))118 suite = Suite(suite_obj, md.name, md.description)119 suite.tags.extend(md.tags)120 suite.properties.update(md.properties)121 suite.links.extend(md.links)122 suite.rank = md.rank123 suite.disabled = md.disabled124 suite.hidden = md.condition and not md.condition(suite_obj)125 try:126 _check_test_tree_node_types(suite)127 except TypeError as excp:128 raise SuiteLoadingError("Invalid suite metadata type for '%s': %s" % (suite.name, excp))129 for hook_name in SUITE_HOOKS:130 if hasattr(suite_obj, hook_name):131 suite.add_hook(hook_name, getattr(suite_obj, hook_name))132 for test in _load_tests(_get_test_methods_from_class(suite_obj)):133 suite.add_test(test)134 for test in _get_generated_tests(suite_obj):135 suite.add_test(test)136 for sub_suite in load_suites_from_classes(_get_sub_suites_from_class(suite_obj)):137 suite.add_suite(sub_suite)138 return suite139def load_suites_from_classes(classes):140 # type: (Sequence[Any]) -> List[Suite]141 """142 Load a list of suites from a list of classes.143 """144 return list(145 filter(146 lambda suite: not suite.hidden, map(load_suite_from_class, classes)147 )148 )149def load_suite_from_module(mod):150 # type: (Any) -> Suite151 """152 Load a suite from a module instance.153 """154 suite_info = getattr(mod, "SUITE", {})155 suite_condition = suite_info.get("visible_if")156 suite_name = suite_info.get("name", inspect.getmodulename(inspect.getfile(mod)))157 suite_description = suite_info.get("description", build_description_from_name(suite_name))158 suite = Suite(mod, suite_name, suite_description)159 suite.tags.extend(suite_info.get("tags", []))160 suite.properties.update(suite_info.get("properties", {}))161 suite.links.extend(map(_normalize_link, suite_info.get("links", [])))162 suite.rank = suite_info.get("rank", _get_metadata_next_rank())163 suite.hidden = suite_condition and not suite_condition(mod)164 try:165 _check_test_tree_node_types(suite)166 except TypeError as excp:167 raise SuiteLoadingError("Invalid suite metadata type for '%s': %s" % (suite.name, excp))168 for hook_name in SUITE_HOOKS:169 if hasattr(mod, hook_name):170 suite.add_hook(hook_name, getattr(mod, hook_name))171 for test in _load_tests(_get_test_functions_from_module(mod)):172 suite.add_test(test)173 for test in _get_generated_tests(mod):174 suite.add_test(test)175 for sub_suite in load_suites_from_classes(_get_suite_classes_from_module(mod)):176 suite.add_suite(sub_suite)177 return suite178def load_suite_from_file(filename):179 # type: (str) -> Suite...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Lemoncheesecake automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful