我们是使用python+reques+unittest来搭建我们的做接口自动化测试框架,使用python语言来调用第三方的类库requests来根据我们接口方法get或者post来发送接口请求,接收响应回来的数据进行适当的格式转换,再通过unittest框架提供的断言来判断响应结果是否符合我们预期,通过HTMLTextRunner的类库来输入html格式的测试报告。
用工具测试接口主要是为了测试接口的正确性和容错性,是为了发现接口中的bug,而用代码编写脚本来进行接口自动化测试主要是为了可以批量执行测试用例,可以多次重复执行,可以帮帮我们监控测试环境和线上环境的接口是否正常工作,还可以输出标准的测试报告,还可以和持续集成工具Jenkins结合,对编译后的代码进行自动化接口测试。
我们会用单元测试框架unittest提供的断言方法来判断接口响应的数据是否和我们预期的一致,比如assertEqual等
a、帮我们来组织和管理测试用例。
u b、通过框架提供的断言来判断我们的用例是否执行通过。
u c、可以通过套件等方式来执行测试用例
u d、支持数据驱动测试
u e、可以帮我们来输出html格式的测试报告
我们通过unittest提供的discover收集所有目录中的不同文件下的测试用例,然后通过unittest提供的runner类运行我们的接口自动化脚本,我们也可以通过HTMLTextRunner来运行我们脚本,并输出测试报告。
我们的自动化测试主要是web UI的自动化测试,主要用于冒烟测试和主要功能的回归测试或者主流浏览器的兼容性测试,作为手工测试的一种补充,提高测试效率,减少一些重复性的测试工作。
1、自动化测试通常是在UI页面完成和稳定之后开始进行的,依据功能测试用例编写自动化测试用例,主要是加入一些元素的定位说明和验证功能是否完成的操作,然后依据自动化测试用例,使用python语言转化为自动化测试脚本,驱动火狐或者谷歌等浏览器,用Selenium提供的API进行页面元素的定位,并对元素进行操作,比如点击,输入内容,下拉框选择等来模拟手工的操作。
2、我们主要使用python+Selenium+unittest来搭建我们自动化测试框架, 主要使用python调用Selenium提供API编写脚本来驱动浏览器执行指定的操作,unittest主要是方便管理并执行多个测试用例,获取最终的测试结果报告。
3、脚本编写调试完成之后,我们在每次开发提交测试版本后用它来进行冒烟测试,也会用它来做主要功能的回归测试。
4、当时的项目自动化测试还处于起步阶段,后续为了更方便的维护会对自动化的脚本进行重构和封装,会采用PO(PageObject)设计模式,对脚本进行分层,也会与持续集成工具Jenkins相结合来自动执行脚本,并生成报告,将测试结果通过邮件的方式发送给相关的人员。
自动化测试可以提高测试效率,可以减少回归测试中重复的工作,可以比较精准的获得测试结果(脚本的执行不依赖于人的主观情绪)
我们主要用自动化测试来进行版本提交时候的冒烟测试和功能回归测试,以正向功能为主,用来检验我们的软件对需求的符合度,或者用脚本来启动不同的浏览器测试系统的兼容性。
如果时间允许,我们也会编写脚本来测试反向功能,发现问题提交缺陷。
Selenium的八种定位方式:ID,name,className,LinkText,partialLinkText,xpath,CSS,tagName
我们经常用的有ID,name,className,xpath等
我们选择定位方式的原则是,哪种简单,能够准确定位就会选择哪一种。
Xpath我们用的也比较多,因为这种定位方式定位比较准确,特别对于一些元素没有ID,name等属性的时候,但我们也不会全都选择xpath方式,因为这种方式可读性比较差,如果路径比较深,执行效率会低一些。
我们使用python调用seleniumAPI来编写脚本,运行脚本后,通过浏览器的驱动启动浏览器并绑定端口,运行脚本向浏览器发送请求,浏览器接收到请求后进行解析并执行,执行后将执行结果反馈给我们的客户端,客户端再决定是否继续执行。