本发明涉及app接口自动化测试技术领域,特别是一种app接口自动化测试方法。
背景技术:
app的应用已经变为平常,而从测试角度来说,测试这些app接口成为了不可或缺的工作内容。那么在接口不断修改和迭代开发,甚至在后台没有对应功能时就要测试接口。这种情况下,一般都由开发人员自行测试,一般的测试岗则很难插足。
或者每一次接口上线,都要完整测试一遍所有接口,因时间紧而对测试内容有所取舍导致上线后在意想不到的接口上出现问题。
app安全性要求很高,很多框架都要求加密,因此对于有加密的框架测其接口就不大容易。很多测试都忽略这部分,不在真是环境中测试。
接口测试重要的部分是断言,一个断言错了这个接口的正确性就变得模糊,对于返回复杂json的断言很多测试是无从下手的。
技术实现要素:
本发明的目的在于克服现有技术的缺点,提供一种app接口自动化测试方法。
本发明的目的通过以下技术方案来实现:一种app接口自动化测试方法,它包括以下步骤:
s独立加密算法,将app加密算法独立出来抽象出一个方法,封装;
s获取加密结果,在app的代码中,通过传递参数取得最后的加密结果,作为app接口的参数之一;
s参数拼接,将获取的参数与其他参数拼接成接口url,并对其进行访问,获取返回值;
s接口测试,在app系统中写入数据,在写入数据时,分为以下两种情况,
s4app系统后台已有相应功能,则直接调用相应功能的内部接口进行数据操作,然后返回的值作为app接口返回值;
s4app系统后台对应功能未开发,通过模拟后台操作,然后返回的值作为app接口返回值;
s断言,对s41所获得的返回值进行断言,从而判断app接口返回值和预期结果是否一致,从而确定用例数据是否存在于app接口返回值中;
s执行应用,用python的unittest和discover来控制用例执行顺序和批量执行。
优选的,所述s1中,在封装加密算法时,选择写一个json脚本,因此通过python的开源库来读取json脚本语言中的方法。
优选的,所述s41步骤中,采用python语言的响应http协议类和方法实现相应功能的内部接口的调用并进行数据操作。
优选的,所述s41和所述s42步骤中,在访问后台内部接口时需要保持session连接。
优选的,所述s4中的获得的app接口返回值,是一个庞大的数据结构,在s5中通过python的requests的assertin来判断接口返回值和预期结果是否一致。
优选的,所述s42中,将app接口与mock通信连接,通过mock模拟后台功能操作,获得app接口返回值。
本发明具有以下优点:本发明的app接口自动化测试方法,剥离出加密算法之后,若以后算法变更,只需修改json即可,进一步将重复代码公共化可以减少代码修改量,断言的方式对于返回值较复杂的数据结构可快速判断。
具体实施方式
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
一种app接口自动化测试方法,它包括以下步骤:
s独立加密算法,将app加密算法独立出来抽象出一个方法,封装;进一步的,在封装加密算法时,选择写一个json脚本,因此通过python的开源库来读取json脚本语言中的方法,在本实施例中,json脚本为javascript脚本语言。
s获取加密结果,在app的代码中,通过传递参数取得最后的加密结果,作为app接口的参数之一;此处,取得的加密结果为json最后的加密结果。
s参数拼接,将获取的参数与其他参数拼接成接口url,并对其进行访问,获取返回值,在本实施例中,url为统一资源定位符;
s接口测试,在app系统中写入数据,在写入数据时,分为以下两种情况,
s4app系统后台已有相应功能,采用python语言的响应http协议类和方法实现相应功能的内部接口的调用并进行数据操作,如:增、删、改、查,然后返回的值作为app接口返回值;
s4app系统后台对应功能未开发,则将app接口与mock通信连接,通过mock模拟后台功能操作,获得app接口返回值通过模拟后台操作,然后返回的值作为app接口返回值;
进一步的,在s41和s42步骤中,在访问后台内部接口时需要保持session连接,否则无访问权限对系统进行数据操作。
当获得的app接口返回值后,该返回值是一个庞大的json数据结构,其结构较为复杂,是list中包含dic,dic是一种数据结构,以健-值对储存,而dic中又有其它list,该list中又包含有其它list,因此结构较为复杂。
s断言,对s41所获得的返回值进行断言,从而判断app接口返回值和预期结果是否一致,从而确定用例数据是否存在于app接口返回值中;由于app接口返回值是一个庞大的json数据结构,因此简单的断言方法就无法使用,在本实施例中,可通过python的requests的assertin来判断接口返回值和预期结果是否一致,而assertin是python语言中用于断言的方法,可以用来判断接口返回值和预期结果是否一致,从而遍历app接口复杂的数据结构判断用例数据是否存在于该json数据的返回值中。
s执行应用,用python的unittest和discover来控制用例执行顺序和批量执行。
下面进行举例进行说明:
拿到教育平台app应用的加密代码,改写为可接收参数的json代码,独立为一个文件,以调用登录接口为例,登录页面有三个元素,用户名文本框,密码文本框,登录按钮。点击登录按钮时,用户名文本框,密码文本框和登录按钮作为参数,传递给加密json进行加密,然后在返回加密后的接口访问路径,这个路径才是真实可用的;应用python语言的requests保持(会话,即保持登录状态,才能继续对平台其他功能的操作,requests是python语言中请求http的方法,当登录接口调用后,会返回一些登录用户的个人信息,例如,姓名,性别,昵称,qq,邮箱等信息,以上信息返回为一个庞大的json数据结构,该返回值的结构是数组中嵌套字典的数据结构,每一个返回值都需要断言来验证是否与预期的结果相同,因此用assertin来断言返回值中每一个键值对。例如name:小王;sex:男;nickname:小小王这些键值对的值是否与预期一致。如果一致,则接口返回正确,否则不正确。
尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点