当前位置: 首页 > news >正文

Python 接口测试(五)

五:使用python进行组织编写接口测试用例

接口测试其实就是几个步骤。

  1. 拿到接口的url地址
  2. 查看接口是用什么方式发送
  3. 添加请求头,请求体
  4. 发送查看返回结果,校验返回结果是否正确

明白了接口测试的测试步骤,那么我们就可以来组织我们的代码。

import requests

# 接口的url
url = "http://fanyi.baidu.com/v2transapi"

# 接口的参数
params = {
    "from":"en",
    "to":"zh", 
    "query": "test"
}

r = requests.request("post", url, params=params)

# 打印返回结果
print(r.text)

# 为了让结果看的更加清楚一点,我取来翻译的字段
import json
d = json.loads(r.text)
print(d['liju_result']['tag'])

结果:

['试验', '测验', '考验', '化验', '考查', '受试验', '受测验', '受考验', '测得结果']

(结果很长,截取最后的)

修改参数再次请求;

import requests

url = "http://fanyi.baidu.com/v2transapi"
params = {
    "from":"en",
    "to":"zh",
    "query": "study" #
}
r = requests.request("post", url, params=params)

import json
d = json.loads(r.text)
print(d['liju_result']['tag'])

结果:

['学习', '研究', '课题', '书房', '结论', '考虑', '沉思', '努力', '想出']

 

ps:我们看看利用工具测试该接口

接下来我们来引入unittest库优化代码:

import requests,unittest,json
class Testbaiduapi(unittest.TestCase):
    def setUp(self):
        url = "http://fanyi.baidu.com/v2transapi"
    def testzhen(self):
        params = {
        "from":"en",
        "to":"zh",
        "query": "study" #
    }
        url = "http://fanyi.baidu.com/v2transapi"
        r = requests.request("post", url, params=params)
        r=json.loads(r.text)
        assert  u'学习' in r['liju_result']['tag']
    def testzhen1(self):
        params = {
        "from":"en",
        "to":"h",
        "query": "stud" #
 }
        url = "http://fanyi.baidu.com/v2transapi"
        r = requests.request("post", url, params=params)
        r=json.loads(r.text)
        assert  u'学习' in r['liju_result']['tag']
    def tearDown(self):
        pass
if __name__=='__main__':
    unittest.main(verbosity=2)

结果:

在python中,提供了HTMLTestRunner.py来生成测试报告,把该文件下载后,直接放到python安装文件的lib的目录下,

就可以导入该模块使用了,见该实现的代码:

import requests,unittest,json,HTMLTestRunner
class Testbaiduapi(unittest.TestCase):
    def setUp(self):
        url = "http://fanyi.baidu.com/v2transapi"
    def testzhen(self):
        params = {
        "from":"en",
        "to":"zh",
        "query": "study" #
    }
        url = "http://fanyi.baidu.com/v2transapi"
        r = requests.request("post", url, params=params)
        r=json.loads(r.text)
        assert  u'学习' in r['liju_result']['tag']
    def testzhen2(self):
        params = {
        "from":"en",
        "to":"h",
        "query": "stud" #
    }
        url = "http://fanyi.baidu.com/v2transapi"
        r = requests.request("post", url, params=params)
        r=json.loads(r.text)
        assert  u'' in r['liju_result']['tag']
    def tearDown(self):
        pass
if __name__=='__main__':
    report_dir= r's.html'
    re_open= open(report_dir,'wb')
    suite=unittest.TestLoader().loadTestsFromTestCase(Testbaiduapi)
    runner=HTMLTestRunner.HTMLTestRunner(
        stream=re_open,
        title=u'百度翻译api接口测试报告',
        description=u'百度翻译api接口测试详情'
    )
    runner.run(suite)

执行后,会在当前目录下生成测试报告,截图如下:

 

其他接口的测试方法也是这个思路,

 

作者寄语:

前进的道路我们充满着迷茫,

前进的每一步我们都会有收获。

路在脚下,我们决定不了我们的出身,但是我们可以努力改变我们未来。

告别昨天失败的自己,努力拼搏今天,成就美好明天

 

 padf文档分享:https://pan.baidu.com/s/1gfuXkpP

 

转载于:https://www.cnblogs.com/leiziv5/p/6422954.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • url中文乱码解决大全
  • warning: unable to bind to property '' on class '' (class is not an IEventDispatcher)
  • Nim游戏
  • Linux下ifort的安装记录
  • Eclipse代码提示功能
  • 关于表格的一些特性
  • 应用程序初始化(0xc0000135)失败
  • linux下制作u盘启动盘
  • 网站防止SQL注入
  • 运用TensorFlow处理简单的NLP问题
  • SQL Server数据库挂马的解决办法
  • 双向数据绑定与单向数据绑定
  • trying to connect to host mail.tr158.cn, port 50, isSSL false
  • Delphi XE7 随笔(2)- 字典
  • BZOJ3672:[NOI2014]购票
  • Google 是如何开发 Web 框架的
  • AngularJS指令开发(1)——参数详解
  • gops —— Go 程序诊断分析工具
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python打包系统简单入门
  • 创建一个Struts2项目maven 方式
  • 分布式任务队列Celery
  • 关于extract.autodesk.io的一些说明
  • 诡异!React stopPropagation失灵
  • 技术:超级实用的电脑小技巧
  • 老板让我十分钟上手nx-admin
  • 为视图添加丝滑的水波纹
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 责任链模式的两种实现
  • 怎么把视频里的音乐提取出来
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ​香农与信息论三大定律
  • ![CDATA[ ]] 是什么东东
  • $.each()与$(selector).each()
  • ()、[]、{}、(())、[[]]命令替换
  • (14)Hive调优——合并小文件
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (九)c52学习之旅-定时器
  • (十)T检验-第一部分
  • (五)MySQL的备份及恢复
  • (一)基于IDEA的JAVA基础10
  • (转)3D模板阴影原理
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .Family_物联网
  • .md即markdown文件的基本常用编写语法
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .Net 8.0 新的变化
  • .net 按比例显示图片的缩略图
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .net连接oracle数据库