一、环境搭建
- python +unittest+ requests实现http请求的接口自动化
- Python的优势:语法简洁优美, 功能强大, 标准库跟第三方库灰常强大,建议大家事先了解一下Python的基础;
- unittest是python的标准测试库,相比于其他测试框架是python目前使用最广的测试框架。
- Requests 是用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP 库。它比urllib 更加方便,可以节约我们大量的工作,完全满足HTTP 测试需求。
- 在CMD命令行执行命令加载request第三方库:pip install requests
- python -m pip install pillow
二、方法
- pip安装requests第三方库,然后引入:import requests
- 引入json标准库,美化json输出:import json
- 调用requests库中的post方法,会给出所需要的参数,传入上面定义的url和data参数,运行.py文件就执行了post请求。
1 2 3 4 5 6 7 8 9 10 11 12 13 | import requests #pip安装requests第三方库,然后引入 import json #引入json标准库,美化json输出 data = { "username" : "***01" , "password" : "password" , } result = requests.post(url,data).json() #以json格式输出 print (result) result = requests.post(url,data).text #以源码形式输出 print (result) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import requests #引入requests第三方包 import json #引入json包 class Login(): def httprequests( self ,url,data,method): #self为类函数的默认函数,放在第一位 if method = = "post" : res = requests.post(url,data) #post请求方法 else : res = requests.get(url,data) #get请求方法 print (res.text) #以源码形式输出 print (res.json()) #以json形式输出 #创建实例,调用函数 test1 = Login() login_data = { "flag" : "mobile" , "password" : "f5e05a41724115d076bfb1fd2bd9613e" , "mobile_phone" : "136********" } login_method = 'post' test1.httprequests(login_url,login_data,login_method) |
三、单元测试
- 什么是单元测试:单元测试就是对代码进行测试,本质就是对类或者函数进行测试
- 什么时候进行单元测试:代码完成后就开始进行测试
- 由谁进行单元测试:一般有开发自己进行测试
- 目的:尽可能早的介入测试,发现底层代码中的问题
- 方法:使用unittest方法包:import unittest
(1)先创建一个加法类-Mathmethod,存入Mathmethod.py文件
1 2 3 4 5 6 | #定义一个数学加法类 class Mathmethod(): def add( self ,a,b): return (a + b) def sub( self ,a,b): return (a - b) |
(2)然后创建测试用例-TestMathmethod
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import unittest from HTMLTestRunner import HTMLTestRunner from requesttest.math.Mathmethod import Mathmethod # 引入Mathmethod模块 #import HTMLTestRunnerNew class TestMathmethod(unittest.TestCase): #创建TestMathmethod类,继承unittest.TestCase方法 #编写测试用例,函数命名必须以test_开头 def test_add_two_num( self ): res = Mathmethod().add( 3 , 6 ) print ( '两个数值相加结果是' ,res) self .assertEqual( 9 ,res) def test_sub_two_num( self ): res = Mathmethod().sub( 9 , 8 ) print ( '两个数值相减结果是' , res) self .assertEqual( 1 ,res) |
(3)创建测试报告-使用HTML方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import unittest from HTMLTestRunner import HTMLTestRunner from requesttest.math.TestMathmethod import TestMathmethod testunit = unittest.TestSuite() #生成单元测试流程 testunit.addTest(TestMathmethod( "test_add_two_num" )) testunit.addTest(TestMathmethod( "test_sub_two_num" )) #加载一条测试用例 fp = open ( 'D:\test\unittest1.html' , 'wb' ) #创建测试报告,以写的方式存入某个路径 runner = HTMLTestRunner( stream = fp, title = "加法测试" , description = "用例执行情况:" ) runner.run(testunit) fp.close() |
(4)也可使用txt的形式输出测试报告
1 2 3 4 5 6 7 8 9 10 11 12 13 | import unittest from HTMLTestRunner import HTMLTestRunner from requesttest.math.TestMathmethod import TestMathmethod suite = unittest.TestSuite() #收集测试用例 loader = unittest.TestLoader() #加载测试用例-按照类的方法添加一个类下面的所有测试用例 suite.addTest(loader.loadTestsFromTestCase(TestMathmethod)) file = open ( 'test_case.txt' , 'w+' ) #测试报告的存储路径和测试报告的读写方式 runner = unittest.TextTestRunner( stream = file , verbosity = 2 , #测试报告的详细程度 ) runner.run(suite) #执行测试用例 |
1 2 3 4 5 6 7 | test_add_two_num (requesttest.math.TestMathmethod.TestMathmethod) ... ok test_sub_two_num (requesttest.math.TestMathmethod.TestMathmethod) ... ok - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ran 2 tests in 0.000s OK |
(5)生成测试报告方法三(HTML的方式)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import unittest from HTMLTestRunner import HTMLTestRunner from requesttest.math.TestMathmethod import TestMathmethod suite = unittest.TestSuite() #收集测试用例 loader = unittest.TestLoader() #加载测试用例 suite.addTest(loader.loadTestsFromTestCase(TestMathmethod)) fp = open ( 'D:\test\unittest1.html' , 'wb' ) #创建测试报告,以写的方式存入某个路径 runner = HTMLTestRunner( stream = fp, title = "加法测试" , description = "用例执行情况:" ) runner.run(suite) fp.close() |
以上就是Python实现接口自动化测试的方法详解的详细内容,更多关于Python接口自动化测试的资料请关注IT俱乐部其它相关文章!