目前我在负责一个 APP 的测试工作。在项目中使用 RobotFramework 作为工具搭建接口自动化框架,进行接口自动化的工作。
本文将从我个人对接口测试和自动化框架的理解以及RobotFramework 在实际项目中落地两个大方面进行讲解。
可以实现接口测试的框架有很多,比如 Pytest,TestNG,RobotFramework 等等,今天就不过多展开对框架的对比了。但是想从公共的角度聊一聊,当你想使用一个工具搭建一套属于自己项目的框架,都应该包括一下几个组成部分
原创整理
这是一个大致通用的结构,想明白、设计好这几个组件之间的关系,那么不管咱们使用任何自动化框架都会很快上手。
在做接口测试时,应该关注的角度有:功能,边界,性能。在设计接口测试用例时,可以从下方图示中根据项目的实际情况设计用例
原创整理
但是在项目的实际运行当中,把接口测试用例设计完备是我们的目标,但是项目中,是否有时间,是否有必要对每个接口都进行完备的编写,还需要根据实际情况酌情设计测试策略,根据我平时的工作经验,我把接口测试分为三个层面:
自动化测试的核心目的之一就是节省人力,从 2 和 3 的层面测试上,就已经可以覆盖功能测试点,节省人力测试的时间了。
在这一部分中,主要以几个关键环节做一个简单的扩展,希望对你能有些启发
根据项目的实际情况,参考框架的组成部分,设计自动化框架的项目的目录结构
根据项目的实际情况,设计一些公共方法。在我这个项目中,我着重处理的是对 Python Requests 类的封装。之所以封装 Requests,是为了实现我测试用例中想实现的一些公共的功能,举例说明一些想实现的能力:
class CommonRequest:
# 创建静态类,封装Requests
def __init__(self):
"""基类初始化
"""
self.headers = {
"Content-Type": "application/json;charset=utf-8",
}
self.token = None # 在后续新建的方法中获取token赋值
self.username = None
self.password = None
以封装 Get 请求为例,将响应码和请求的响应时间封装到 body 里,用于断言
def get_request(self, url, params=None, headers=None, **kwargs):
"""封装get操作
"""
try:
response = requests.get(url=url, headers=self.headers, verify=False, **kwargs)
content = json.loads(response.text)
response_d = dict()
response_d["code"] = response.status_code # 将响应码返回到body中
response_d["response_time"] = response.elapsed.total_seconds() # 将响应时间返回到body中
except Exception as e:
raise Exception("Exception: {}".format(e))
response_d["body"] = content
return response_d
设计好配置文件的上下引用关系,可以大大提高接口项目的健壮性,拿接口地址为例,将环境信息不断抽层,最终实现只改动一个变量来匹配不同的环境
&{uat} app_base_url=https://demo-api.com app_h5_url=https://demo-h5.com
${app_url} ${uat}[app_base_url]
${api_url} ${app_url}/v1/demo/test
上面的工作准备差不多后,就可以开始真正的测试用例编写了。你会发现,当你设计一个框架的时候,用例是最后编写的,准备工作就绪后,编写用例就变成了体力活。
Class_01_Demo用例
#定义测试接口
${url} Set Variable ${api_url}
#发送请求(此时的Get Request已经是封装后的了)
${response} Get Request ${url}
#断言
Should Be Equal As Strings ${response["code"]} 200 #断言响应码应该是200
Should Be True ${response["response_time"]}<1 #断言响应时间小于1s
以上是一个很粗的落地过程,省略了很多通用步骤,将一些重要的环节拿出来做了阐述。如果是 RobotFramework 初学者可能看不懂上面的内容,上面的流程比较适用于在 RobotFramework 上摸爬滚打了一段时间的小伙伴,希望可以对你有些启发,也欢迎随时与我交流,共同进步!
本文原创,禁止转载!
本文参与了「TesterHome 技术征文」,欢迎正在阅读的你也加入