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请求。


import requests    #pip安装requests第三方库,然后引入

import json             #引入json标准库,美化json输出


url = 'http://***/account/login'

data = {

        "username":"***01",

        "password":"password",

}


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

print(result)

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

print(result)

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_url='https://www.******/pc/member/sign'

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文件



#定义一个数学加法类

class Mathmethod():

def add(self,a,b):

return(a+b)

def sub(self,a,b):

return(a-b)

(2)然后创建测试用例-TestMathmethod



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方法



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的形式输出测试报告



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)#执行测试用例

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的方式)


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

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群:,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值