一、环境搭建

  •  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. url = 'http://***/account/login'

  4. data = {

  5.         "username":"***01",

  6.         "password":"password",

  7. }

  8. result = requests.post(url,data).json() #以json格式输出

  9. print(result)

  10. result = requests.post(url,data).text #以源码形式输出

  11. 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()

 感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐