• python接口自动化测试(单元测试方法)


    一、环境搭建

    •  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()

    Python接口自动化测试零基础入门到精通(2023最新版)

  • 相关阅读:
    上半年绩效差,「营销分析报告」无从下手,这套模板领导一看就懂
    kube-proxy参数ClusterCIDR做什么
    基于python的反爬虫技术的研究设计与实现
    基于Python+word2vec模型的词向量化文本分类算法
    Jenkins集成Terraform实现阿里云CDN自动刷新
    x-api接口鉴权架构设计和实现【万字+深度】
    Mysql数据库SQL语句与管理
    离子风蛇的工业应用领域和用途
    Java常见漏洞——整数溢出漏洞、硬编码密码漏洞、不安全的随机数生成器
    日志模块loguru 最简单用法
  • 原文地址:https://blog.csdn.net/dq565/article/details/133977501