天天看点

从0到1的自动化测试项目实施--第一天

 测试项目简介:基于python语言 

  跨平台的测试自动化工具,适用于后台、原生或混合型客户端应用的测试。它支持 Android、iOS、Web、后台、云服务和 Windows 端的 UI 自动化测试。

上手快,操作简单,只要有一点python基础,打来文件就可以直接上手。

1、测试项目的文件目录介绍

从0到1的自动化测试项目实施--第一天

 2、直接上实战项目

  跨平台的测试自动化工具,适用于后台、原生或混合型客户端应用的测试。它支持 Android、iOS、Web、后台、云服务和 Windows 端的 UI 自动化测试

 在testlib中把接口封装成增删改查四个,然后在testcase中将增删改查的接口拼接起来,组合成一条对资源进行创建、修改、查询、删除操作的测试用例。

实例一:

 testlib中封装好的接口:创建 -- 修改 --查询 --删除

@classmethod
def create(cls, body):
    '''创建虚拟机资源
    '''
    uri = '/xxx/create' 
    rsp = cls.get_api(cls.host, cls.base_uri).post(uri, body=body)
    print "Response:", rsp
    try:
        resourceId = rsp['data']['data']['result']['resourceResults'][0]['resourceId']   
        taskId = rsp['data']['data']['taskId']
        if rsp['result_code'] == 200:
            cls.wait_for_status_create(taskId, cls.taskType.Create, resourceId, cls.EnumStatus.Running)
            print "虚拟机创建成功 资源id为:", resourceId
            return resourceId
    except Exception as msg:
        raise RuntimeError(msg)      
@classmethod
def get(cls, resourceId):
    '''
    # 查询单个虚拟机信息
    resourceId:资源id
    '''
    uri = '/resources/%s' % resourceId
    rsp = cls.get_api(cls.host, cls.base_uri).get(uri)      
try:
    if rsp['result_code'] == 200:
        return rsp
except Exception as msg:
    raise RuntimeError(msg, rsp)      
@classmethod
def rename(cls, resourceId, name, C):
    '''虚拟机修改名称
    '''
    uri = '/xx/name'
    data = {
        "resourceId": resourceId,
        "name": name,
        "C": C
    }
    rsp = cls.get_api(cls.host, cls.base_uri).put(uri, body=data)
        
try:
    if rsp['result_code'] == 200:
        return rsp
except Exception as msg:
    raise RuntimeError(msg, rsp)      
return Model._solve_the_response(rsp)      
@classmethod
def operate_vm(cls, B resourceId, D):
    ''' 
    !销毁操作
    uri = '/xxx/action'
    data = {
        "resourceIds": [resourceId],
        "B": B,
        "D": D,

    }
    rsp = cls.get_api(cls.host, cls.base_uri).post(uri, body=data)
    print "Response:", rsp
    try:
        if rsp['result_code'] == 200:
            cls.wait_for_status(resourceId, EnumStatus)
            print "虚拟机操作成功 ,虚拟机当前状态为  %s" % EnumStatus
            time.sleep(10)
            return
    except Exception as msg:
        raise RuntimeError(rsp, msg)      
testcase中拼把增删改查的接口拼装起来,组合成一条虚拟机创建/修改/查询/删除的测试用例      
@datadrive.DataDrive(testdata)
class BatchCreateAnddel_VM_TEST(TstackTestCase, Clean_resource):
    '''虚拟机批量创建-批量销毁
    '''
    owner = "xxxx"
    timeout = 20
    priority = High
    status = Design

    def run_test(self):
        body, step_name = self.casedata
        # -----------------------------创建虚拟机----------------------------------------------
        self.start_step(step_name)
        rsp = VM.Create(body)      
resourceId = rsp['data']['result']['resourceResults'][0]['resourceId']        
self.assert_equal("验证失败“,rsp["result_code"],200)

        #---------------------------------查询虚拟机-------------------------------------------      
     self.start_step("获取Id列表中的资源情况")
     VM.get_resource_by_id(VmResourceId)

        #--------------------------------------修改虚拟机名称---------------------------------      
    self.start_step("修改虚拟机名称")
    name, operator = self.casedata  #参数化,数据驱动的方式
    rsp = VM.rename(VmResourceId, name, C)
    self.assert_equal("虚拟机修改名称失败", rsp['result_code'], 200)      
# ------------------------------------------------------------------------------
        self.start_step("销毁虚拟机")
        VM.operate_Batchvm(A, VmResourceId,B)
        self.success_label()      
if __name__ == '__main__':      
BatchCreateAnddel_VM_TEST().debug_run()      
pass
代码分享完成,跑起来看看效果。

        
从0到1的自动化测试项目实施--第一天

 输出测试报告看看。

从0到1的自动化测试项目实施--第一天

优点

 a.测试用例包含创建人/用例等级/日期/执行次数/编号

b,测试用例可单条/多条/整个模块批量执行

c,数据驱动模式,简化重复的测试参数