搭建自动化测试框架以及代码的编写,很多时候都是摸着石头过河,但是有几个小点可以一开始就考虑好,这样能减少后续重新修改代码的机率。
确定基础测试框架基础框架的选择非常重要,值得慎重去选择,需要根据公司的具体业务,以及期望运用自动化脚本完成哪些测试任务去决定。可以从以下几点考虑。
- 比如用python自带的unittest是否已经能满足需要?还是选择一些类似pytest功能更强大的第三方插件?
- 脚本和测试数据应该做到分离,使用什么类型的文件写测试数据?用excel表还是yaml文件?我们公司,用的是pytest,测试数据也不会非常庞大,所以选择了yaml文件写测试数据,既轻量又和pytest是黄金搭档。
- 是否需要输出测试报告?还是查看log日志就满足需要?如果需要输出测试报告,大多数会选择allure。
用pytest举例,pytest收集测试用例的规则:
- 测试文件以test_开头(以_test结尾也可以)
- 测试类以Test开头,并且不能带有 init 方法
- 测试函数以test_开头(以_test结尾也可以)
根据收集规则,就需要注意py文件、类名、方法名的命名,不能随意用test/Test这个单词开头或结尾。一开始,我写的代码很随意的就用Test/test开头,比如下面的代码
class TestCas():
def test_a(self,url,prd,id,type):
reskwargs = baseRequest.postRequest(url,prd,id,type)
return reskwargs
def test_b(self,url,url,prd,id,type,cashOutId):
reskwargs = baseRequest.postRequest(url,prd,id,type,id = cashOutId)
return reskwargs
def test_c(self,url,prd,id,type):
reskwargs = baseRequest.postRequest(url,prd,id,type)
return reskwargs
这样写,就会被认为是测试用例,如果运行时被收集,就会有报错信息,因为这三个方法,都需要传入参数才能运行起来。
一定要搞清楚收集规则,不是测试用例的文件名、类名、方法名要避开规则。不要想着后面可以改回来,真有很多名字需要改的时候,你会改到怀疑人生。
重点部分的注释是很有必要的,对于自己和团队来说,可以减少沟通成本和回顾代码的成本,特别是测试数据的一些注释。在一开始,因为读取yaml文件时没有指定编码(代码如下),有中文注释时一直会报错。
def get_yaml_content(path):
# 打开一个文件,生成文件流对象
with open(path) as f:
# 使用yaml解析文件流,生成一个Python可识别的数据类型
data = yaml.safe_load(f)
return data
当时懒得理,想着以后补上注释,就一直拖着没去解决。后来团队小伙伴看我的代码,不确定代码代表的意思,就需要不断的沟通,花费很多时间。那时就意识到必须要写注释。然后查看代码,累积了非常多的文件需要补注释,顿时手软,心情不美丽了。
通常情况下,中文注释会报错或者显示不了,检查一下编码格式。在一开始就想办法解决,把注释写起来。不要以为自己的英文命名很牛逼,其它人能见名知义。有时候时间久了自己再去看,发现也看不懂了。
上文yaml文件获取加上编码格式,有中文注释就不会报错了
def get_yaml_content(path):
# 打开一个文件,生成文件流对象
with open(path,'r', encoding='utf-8') as f:
# 使用yaml解析文件流,生成一个Python可识别的数据类型
data = yaml.safe_load(f)
return data
包的引入方式
假设项目的结构如下
在test_new_user.py
文件调用user.py
文件的UserAll
类里面的一个方法,python引用方式默认写成from user import UserAll
。这样写在IDE运行是正常的,因为IDE启用了source root功能,但是在控制台运行test_new_user.py
,会提示找不到包,因为allrequestfile
目录没有被加载。所以要手动添加目录from allrequestfile.user import UserAll
写好的测试用例,最好在控制台运行一遍,避免引入方式不对,出现找不到包的问题。在一开始就按照from allrequestfile.user import UserAll
这种方式引入,保证在控制台也能正常运行。
一开始就保证在控制台能正常运行,这将为以后如果接入类似jenkins这样的平台作准备。这也是官方推荐的引入写法。
入门自动化测试,很难把所有的知识点掌握以后才开工,后续出现需要调整以前写的代码,这种情况是在所难免的。但是上文的几个点,可以在一开始就做好,这样减少返工的几率。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)