Python+Requests+UnitTest+HTMLTestRunner+Log+Email接口自动化项目实战

一、什么是unittest

unittest是Python单元测试框架,类似于JUnit框架。unittest中有4个重要的概念:test fixture, test case, test suite, test runner

Testcase:

一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码 (run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。

Test suite:

多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。

Test runner:

是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。

TestLoader:

是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例。

Test fixture:

对一个测试用例环境的搭建和销毁,是一个fixture,通过覆盖 TestCase的setUp()和tearDown()方法来实现。这个有什么用呢?比如说在这个测试用例中需要访问数据库,那么可以在setUp() 中建立数据库连接以及进行一些初始化,在tearDown()中清除在数据库中产生的数据,然后关闭连接。注意tearDown的过程很重要,要为以后的 TestCase留下一个干净的环境。关于fixture,还有一个专门的库函数叫做fixtures,功能更加强大。

二、项目实战:

第一步、搭建项目框架(创建Gwyc_Api_Script_Unittest目录)

目录说明:Gwyc_Api_Script_Unittest项目主目录、common存放公共方法、datas存放测试数据、log日志、report测试报告、tests测试用例、readme说明文档、requirements.txt描述版本及相应依赖包,便于环境部署直接执行文件安装所有插件包。

第二步、封装登录获取token(common目录下面创建login.py)

在后面的接口中都会用到token,这里可以只返回token,也可以将请求头的一些信息一起返回,后面的接口就统一用返回的请求头信息。涉及到个别接口需要使用不一样的请求头信息时,可以使用self.headers.update({'Content-Type':self.data.content_type})的形式将需要添加的请求头信息添加到headers里面。

 

第三步、创建配置文件(common目录下创建config.py)

将需要用到的一些路径定义在里面,这里也可以写一个函数:os.path.dirname(__file__)进行获取到目录文件,也可以直接写在config里面,需要用到的时候引入config就可以用到里面的配置信息。

第四步、封装discover方法并生成测试报告(common目录下面创建discover.py)

addTest方法和discover方法都可以用各有不同的优势,前者是把需要执行的用例添加到suite.addTest里面用例执行顺序按添加的顺序执行。后者会自动根据test开头的.py文件进行匹配用例,然后执行。执行顺序按ASCII码的顺序加载测试用例,数字与字母顺序为:0~9,A~Z,a~z。如果要让某个用例先执行不能使用默认的main()方法,需要通过TestSuite类的addTest()方法按顺序执行。

第五步、封装日志(common目录下面创建log.py)

日志生成可以按时间生成日志文件,例如按日生成一个文件,也可以按运行次数生成日志文件,取决于配置的日志时间。不添加日志时间则每次生成的日志都会覆盖上一次的日志文件这不符合实际,因此需要在生成日志的标题上面加上生成的时间,这样日志会以标题进行区分就不会覆盖。

 

第六步、封装邮件(common目录下面创建send_email.py)

一、python对SMTP的支持

SMTP(Simple Mail Transfer Protocol)是简单传输协议,它是一组用于用于由源地址到目的地址的邮件传输规则。python中对SMTP进行了简单的封装,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

python对SMTP的支持

①email模块:负责构建邮件

②smtplib模块:负责发送邮件

 

 第七步、封装接口用例(tests目录下面创建test_company_SettlementBill_Api.py)

测试文件标题根据自己项目模块命名,必须以test开头,否则不会被执行。在实际项目中一般以模块进行管理用例一个模块建立一个test测试文件,一个测试文件为一个unittest测试类。

需要引入的模块:

 

将需要用到的全局变量定义在setUpClass(cls)里面,在执行所有用例前会执行一次里面的方法避免重复调用:将请求方法也封装在里面后面接口直接调用。

 

 封装断言及对返回数据及请求参数进行封装然后进行输出。

 

用例文件,必须以test开头定义测试用例,只需定义接口的请求参数,url及请求方式,请求头及,断言都直接调用前面封装好的函数或者方法。

第八步、创建定时任务(common目录下面创建start_run.py)

通过设定定时任务来指定时间自动运行discover里面封装的用例,生成报告和日志并发送邮件。启动任务:cmd方式进入start_run.py文件目录,执行python start_run.py,系统会自动检测设定好的时间执行用例。

第九步、检查测试报告及邮件的发送(打开report目录下面生成的html文件)

测试报告:

 

邮件:

 

 

 

简单测接口自动化测试完毕!仅供参考更多的是灵活运用于项目

 

 

 

 

 


 

posted @ 2020-09-04 12:07  ~狼哥~  阅读(492)  评论(0编辑  收藏  举报