python自动化_python自动化之分层抽离设计

本文介绍了如何将Postman接口用例转化为Python自动化测试用例,并展示了代码优化与重构的过程。通过创建config、common、report、case、run和data等目录,实现代码的分层和模块化,提高代码可读性和维护性。run.py文件负责执行测试,get()函数用于解析测试数据。优化后的代码结构更加清晰,便于理解和维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在前面的

        postman接口用例转化为python自动化测试用例

        postman接口用例转化为python自动化测试用例(二)

        postman接口用例转化为python自动化测试用例(三)

        python自动化测试用例之----引入ddt数据驱动

        python接口自动化测试完毕--钉钉发送测试结果

       几篇文章中,对接口测试进入了大致的讲解,但是前面的没有对代码进行抽离设计,整体的目录都是在一块,看起来杂乱无章,让人头疼。甚至有时候看起来就是没有灵魂。很多人看到你的代码,都无从下眼,找不到怎么去看你的代码,怎么去理清你代码的思路呢。

       在我看来,是需要对代码进行优化设计重构的,我们接下来看看应该怎么拆分呢,其实无外乎将一些代码封装抽离出来。但是怎么拆分呢。今天来看看我拆分的思路。也不算是设计吧,只是给大家讲讲我是怎么去拆分的。

        目前代码如下所示,我的拆分呢,一般会这么拆分。

   f1a4dd208fc71db721d4cad9eec834e9.png

         1.config 目录,放配置文件

            2.common 目录,放通用文件

            3.report目录,放测试报告

            4.case目录,放测试用例

            5.run文件,放执行代码

            6.data目录,存放case的data数据文件

            于是我按照这个思路对代码进行了一定的调整。

ae774487d129dfb21337b18a78ee88e8.png

    优化后的目录是这样的,我们看下优化后新增的run文件有里面都是实现了什么。

import unittestfrom common.HTMLTestRunnerCN import HTMLTestReportCNfrom common.senddingtalk import sendmessageif __name__ == "__main__":    import os    suit = unittest.TestSuite()    loader = unittest.TestLoader()    suit.addTests(loader.discover(os.getcwd()+"/case"))    path=os.getcwd()+"/report"    filePath = path+'/report.html'    fp = open(filePath, 'wb')    runner = HTMLTestReportCN(        stream=fp,        title='Test Report',        description='Test Report'    )    runner.run(suit)    fp.close()    sendmessage("测试报告执行完毕,请查阅")

        这就是调整后新增的run.py文件,当然了,除了这个文件,其他文件也进行了一定的调整,获取测试用例的文件进行了优化,优化后的代码如下:

import osdef get():    reslut = []    path=os.getcwd()    f=open(path+"/data/case.txt","r")    all=f.readlines()    for item in all:        dictone={}        reslut_all=item.split("|")        dictone["url"]=reslut_all[0]        dictone['data']=reslut_all[1]        dictone['headers']=reslut_all[2]        dictone['assert']=reslut_all[3]        dictone['method']=reslut_all[4]        reslut.append(dictone)    return reslut

          只是对文件增加了目录调整,这里的case,common,config 都是python的包,方便可以从中引用py文件。其他的可以直接创建文件。

        到这里我们的代码分层抽离就调整完毕。整个抽离过程是简单的。只是让通用的地方,做通用的事。

            善于优化,善于总结。

            回归简单,回归简洁。

            简单明了,分层设计。

            始于简洁,终于优雅。

        关注雷子说测试

3034c92a1b81286a879aee6d7e07c70f.png

                                                        如果感觉写的不错,请点击下在看。

传统的自动化测试更关注产品UI 层的自动化测试,而分层自动化测试倡导产品开发的不同阶段(层 次)都需要自动化测试。 相信测试同学对上面的金字塔并不陌生,这个就是产品开发各个同阶段所对应的测试!随然这个模型 并不新鲜,或者经常被各种测试书中提到,但实际生产中,大多公司与研发团队其实是忽略了单元测试与 集成测试阶段的自动化测试工作,所以,在分层自动化测试中,我们有必要对这些定义重新理解和定义。 单元测试:我们需要规范的来做单元测试同样需要相应的单元测试框架,如java 的Junit、testNG, C#的NUnit ,Python 的unittest、pytest 等,几乎所有的主流语言,都会有其对应的单元测试框架。 集成、接口测试:对于不少测试新手来说不太容易理解,单元测试关注代码的实现逻辑,例如一个if 分支或一个for 循环的实现;那么集成、接口测试关注的一是个函数、类(方法)所提供的接口是否可靠。 例如,我定义一个add()函数用于计算两个参数的结果并返回,那么我需要调用add()并传参,并比较返 回值是否两个参数相加。当然,接口测试也可以是url 的形式进行传递。例如,我们通过get 方式向服务 器发送请求,那么我们发送的内容做为URL 的一部分传递到服务器端。但比如Web service 技术对外提 供的一个公共接口,需要通过soapUI 等工具对其进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值