示例#1
0
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)
示例#2
0
文件: datadrive.py 项目: Tencent/QTAF
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
示例#3
0
 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)
示例#4
0
文件: datadrive.py 项目: Tencent/QTAF
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
示例#5
0
 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())
示例#6
0
 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)
示例#7
0
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