翼度科技»论坛 编程开发 python 查看内容

Python实现接口自动化测试的方法详解

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
一、环境搭建


  • 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. import requests    #pip安装requests第三方库,然后引入
  2. import json             #引入json标准库,美化json输出
  3.   
  4. url = 'http://***/account/login'
  5. data = {
  6.         "username":"***01",
  7.         "password":"password",
  8. }

  9. result = requests.post(url,data).json()  #以json格式输出
  10. print(result)
  11. result = requests.post(url,data).text     #以源码形式输出
  12. print(result)
复制代码
  1. import requests#引入requests第三方包
  2. import json#引入json包

  3. class Login():
  4.     def httprequests(self,url,data,method):#self为类函数的默认函数,放在第一位
  5.         if method=="post":
  6.             res=requests.post(url,data)#post请求方法
  7.         else:
  8.             res=requests.get(url,data)#get请求方法
  9.         print(res.text)#以源码形式输出
  10.         print(res.json())#以json形式输出

  11. #创建实例,调用函数
  12. test1=Login()
  13. login_url='https://www.******/pc/member/sign'
  14. login_data={"flag":"mobile",
  15.             "password":"f5e05a41724115d076bfb1fd2bd9613e",
  16.             "mobile_phone":"136********"}
  17. login_method='post'
  18. test1.httprequests(login_url,login_data,login_method)
复制代码
三、单元测试


  • 什么是单元测试:单元测试就是对代码进行测试,本质就是对类或者函数进行测试
  • 什么时候进行单元测试:代码完成后就开始进行测试
  • 由谁进行单元测试:一般有开发自己进行测试
  • 目的:尽可能早的介入测试,发现底层代码中的问题
  • 方法:使用unittest方法包:import unittest  
(1)先创建一个加法类-Mathmethod,存入Mathmethod.py文件
  1. #定义一个数学加法类
  2. class Mathmethod():
  3.     def add(self,a,b):
  4.         return(a+b)
  5.     def sub(self,a,b):
  6.         return(a-b)
复制代码
(2)然后创建测试用例-TestMathmethod
  1. import unittest
  2. from HTMLTestRunner import HTMLTestRunner
  3. from requesttest.math.Mathmethod import Mathmethod  # 引入Mathmethod模块
  4. #import HTMLTestRunnerNew


  5. class TestMathmethod(unittest.TestCase):#创建TestMathmethod类,继承unittest.TestCase方法
  6.     #编写测试用例,函数命名必须以test_开头
  7.     def test_add_two_num(self):
  8.         res=Mathmethod().add(3,6)
  9.         print('两个数值相加结果是',res)
  10.         self.assertEqual(9,res)

  11.     def test_sub_two_num(self):
  12.         res=Mathmethod().sub(9,8)
  13.         print('两个数值相减结果是', res)
  14.         self.assertEqual(1,res)
复制代码
(3)创建测试报告-使用HTML方法
  1. import unittest
  2. from HTMLTestRunner import HTMLTestRunner
  3. from requesttest.math.TestMathmethod import TestMathmethod


  4. testunit=unittest.TestSuite()#生成单元测试流程
  5. testunit.addTest(TestMathmethod("test_add_two_num"))
  6. testunit.addTest(TestMathmethod("test_sub_two_num"))#加载一条测试用例
  7. fp=open('D:\\test\\unittest1.html','wb')#创建测试报告,以写的方式存入某个路径
  8. runner=HTMLTestRunner(
  9.     stream=fp,
  10.     title="加法测试",
  11.     description="用例执行情况:"
  12.     )
  13. runner.run(testunit)
  14. fp.close()
复制代码

(4)也可使用txt的形式输出测试报告
  1. import unittest
  2. from HTMLTestRunner import HTMLTestRunner
  3. from requesttest.math.TestMathmethod import TestMathmethod

  4. suite=unittest.TestSuite()#收集测试用例
  5. loader=unittest.TestLoader()#加载测试用例-按照类的方法添加一个类下面的所有测试用例
  6. suite.addTest(loader.loadTestsFromTestCase(TestMathmethod))
  7. file=open('test_case.txt','w+')#测试报告的存储路径和测试报告的读写方式
  8. runner=unittest.TextTestRunner(
  9.     stream=file,
  10.     verbosity=2,#测试报告的详细程度
  11. )
  12. runner.run(suite)#执行测试用例
复制代码
  1. test_add_two_num (requesttest.math.TestMathmethod.TestMathmethod) ... ok
  2. test_sub_two_num (requesttest.math.TestMathmethod.TestMathmethod) ... ok

  3. ----------------------------------------------------------------------
  4. Ran 2 tests in 0.000s

  5. OK
复制代码
(5)生成测试报告方法三(HTML的方式)

  1. import unittest
  2. from HTMLTestRunner import HTMLTestRunner
  3. from requesttest.math.TestMathmethod import TestMathmethod

  4. suite=unittest.TestSuite()#收集测试用例
  5. loader=unittest.TestLoader()#加载测试用例
  6. suite.addTest(loader.loadTestsFromTestCase(TestMathmethod))

  7. fp=open('D:\\test\\unittest1.html','wb')#创建测试报告,以写的方式存入某个路径
  8. runner=HTMLTestRunner(
  9.     stream=fp,
  10.     title="加法测试",
  11.     description="用例执行情况:"
  12.     )
  13. runner.run(suite)
  14. fp.close()
复制代码
以上就是Python实现接口自动化测试的方法详解的详细内容,更多关于Python接口自动化测试的资料请关注脚本之家其它相关文章!

来源:https://www.jb51.net/python/3264782fw.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具