自动化脚本搭建和入门编写需要注意的几个点,大大减少需要返工的时间

自动化脚本搭建和入门编写需要注意的几个点,大大减少需要返工的时间,第1张

前言

搭建自动化测试框架以及代码的编写,很多时候都是摸着石头过河,但是有几个小点可以一开始就考虑好,这样能减少后续重新修改代码的机率。

确定基础测试框架

基础框架的选择非常重要,值得慎重去选择,需要根据公司的具体业务,以及期望运用自动化脚本完成哪些测试任务去决定。可以从以下几点考虑。

  1. 比如用python自带的unittest是否已经能满足需要?还是选择一些类似pytest功能更强大的第三方插件?
  2. 脚本和测试数据应该做到分离,使用什么类型的文件写测试数据?用excel表还是yaml文件?我们公司,用的是pytest,测试数据也不会非常庞大,所以选择了yaml文件写测试数据,既轻量又和pytest是黄金搭档。
  3. 是否需要输出测试报告?还是查看log日志就满足需要?如果需要输出测试报告,大多数会选择allure。
提前搞懂选择框架收集测试用例的规则,从而注意py文件、类名、方法名的命名

用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这样的平台作准备。这也是官方推荐的引入写法。

总结

入门自动化测试,很难把所有的知识点掌握以后才开工,后续出现需要调整以前写的代码,这种情况是在所难免的。但是上文的几个点,可以在一开始就做好,这样减少返工的几率。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/715859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存