def _get_translated_in_datadrive(name, dd): if isinstance(name, six.string_types): name = smart_text(name) else: name = str(name) translated_name = translate_bad_char(name) for item in dd: if isinstance(item, six.string_types): item_string = smart_text(item) else: item_string = str(item) if translated_name == translate_bad_char(item_string): return dd[item] else: raise ValueError("找不到对应名字'%s'的数据驱动用例" % name)
def translate_bad_char4exclude_keys(data_key): if isinstance(data_key, six.string_types): data_key = smart_text(data_key) else: data_key = str(data_key) data_key = translate_bad_char(data_key) return data_key
def __init__(self, testcase): super(JSONResult, self).__init__() self._steps = [] self._data = { "testcase": testcase.test_name, "steps": self._steps, "failed_info": "", } self._translated_name = translate_bad_char(testcase.test_name)
def load_datadrive_tests(cls, name=None, exclude_data_key=None, attrs=None): '''加载对应数据驱动测试用例类的数据驱动用例 ''' if is_datadrive(cls): dd = get_datadrive(cls) else: if not settings.DATA_DRIVE: raise RuntimeError("DATA_DRIVE is not set to True") from testbase.loader import TestDataLoader dd = TestDataLoader().load() if name: if name in dd: drive_data = {name : dd[name]} else: drive_value = _get_translated_in_datadrive(name, dd) drive_data = {name : drive_value} else: drive_data = dd if exclude_data_key is None: exclude_data_key = [] exclude_data_key = [_translate_bad_char4exclude_keys(item) for item in exclude_data_key] tests = [] for item in drive_data: # 如果有排除标签 exclude_item = _translate_bad_char4exclude_keys(item) if exclude_data_key is not None and exclude_item in exclude_data_key: continue testdata = drive_data[item] if isinstance(item, six.string_types): item = smart_text(item) else: item = str(item) casedata_name = item if has_bad_char(item): casedata_name = translate_bad_char(item) warn_msg = "[WARNING]%r's drive data key should use \"%s\" instead of \"%s\"" % (cls, casedata_name, item) logger.warn(warn_msg) if isinstance(testdata, dict) and "__attrs__" in testdata: new_attrs = testdata.get("__attrs__") else: new_attrs = None if attrs: if not new_attrs: new_attrs = attrs else: new_attrs.update(attrs) tests.append(cls(testdata, casedata_name, new_attrs)) return tests
def __init__(self, testcase): '''构造函数 :param file_path: XML文件路径 :type file_path: string ''' super(XmlResult, self).__init__() self._xmldoc = dom.Document() translated_name = translate_bad_char(testcase.test_name) self._file_path = '%s_%s.xml' % (translated_name, get_time_str())
def __init__(self, testcase): super(JSONResult, self).__init__() self._steps = [] self._data = { "testcase": testcase.test_name, "description": testcase.test_doc, "owner": testcase.owner, "priority": testcase.priority, "status": testcase.status, "timeout": testcase.timeout, "steps": self._steps, "failed_info": "", } self._translated_name = translate_bad_char(testcase.test_name)
def load_datadrive_tests(cls, name=None): '''加载对应数据驱动测试用例类的数据驱动用例 ''' if is_datadrive(cls): dd = get_datadrive(cls) else: if not settings.DATA_DRIVE: raise RuntimeError("DATA_DRIVE is not set to True") from testbase.loader import TestDataLoader dd = TestDataLoader().load() if name: if name in dd: drive_data = {name: dd[name]} else: drive_value = _get_translated_in_datadrive(name, dd) drive_data = {name: drive_value} else: drive_data = dd tests = [] for item in drive_data: testdata = drive_data[item] if isinstance(item, six.string_types): item = smart_text(item) else: item = str(item) casedata_name = item if has_bad_char(item): casedata_name = translate_bad_char(item) warn_msg = "[WARNING]%r's drive data should use \"%s\" instread of \"%s\"" % ( cls, casedata_name, item) logger.warn(warn_msg) if isinstance(testdata, dict) and "__attrs__" in testdata: attrs = testdata.get("__attrs__") else: attrs = None tests.append(cls(testdata, casedata_name, attrs)) return tests