最近在做一个接口测试的更新,往里面添加了很多新的测试,连续加班两周,这里做一些总结。
被测设备介绍:
这是一个针对某款智能设备的WEB API的测试,设备内运行OpenWRT系统,内部使用一套节点来记录很多设备信息和配置信息,设备也提供一个WEB GUI页面,可以通过打开其主页来做配置,也提供了一套WEB 接口API,来实现远程设置功能(其实就是给WEB GUI页面来调用)
测试框架介绍:
测试用python实现,主要用到的有单元测试框架pytest,HTTP库requests,还有ssh连接用的pamamiko。
工作背景:
这次工作之前,这套接口测试已经基本成型,运行了一段时间,最近是根据客户要求,往其中添加更多的set测试。可以理解为,已经有的测试多数是get测试,使用类似于cgi?get=wifi_status这样的query去获WEB的response,也即一个json串,再继续解析出设备上Wi-Fi的具体信息的值,再针对这些值做一些验证(和通过ssh登陆上设备调用shell命令获取的信息进行对比)。
反思
下面是重构测试代码的时候,用到的一段python代码,用到函数里的内部函数特性,也称为闭包:
#!/usr/bin/env python
def run():
a = {"name":"Li Ming", "age":23}
def inner_func():
a.clear()#此处python自动识别出这是一个外部变量a,很智能吧!
a.update({"language":"python"})
inner_func()
print(a)
def new_inner_func():
a = {"language":"java"} #此处未能影响外部的变量a,只是一个内部函数里变量
new_inner_func()
print(a)
run()
执行结果是
{'language': 'python'}
{'language': 'python'}