python接口自动化(二十五)--unittest断言——下(详解)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 本篇还是回归到我们最初始的话题,想必大家都忘记了,没关系看这里:传送门 没错最初的话题就是登录,由于博客园的登录机制改变了,本篇以我找到的开源免费的登录API为案例,结合 unittest 框架写 2 个用例。同样我们先来看一下接口文档。

简介


  

本篇还是回归到我们最初始的话题,想必大家都忘记了,没关系看这里:传送门  没错最初的话题就是登录,由于博客园的登录机制改变了,本篇以我找到的开源免费的登录API为案例,结合 unittest 框架写 2 个用例。同样我们先来看一下接口文档。


接口文档


登录接口


请求方式:POST

请求地址:https://api.apiopen.top/developerLogin


Query参数名 类型 必需 描述 示例 e.g.
name string 用户名 peakchao
passwd string 密码 123456


返回示例:


{
    "code": 200,
    "message": "成功!",
    "result": {
        "apikey": "b9b3a96f7554e3bead2eccf16506c13e"
    }
}

 

设计测试用例


1、针对以上接口文档,设计这个登录接口的测试用例


1232840-20190428084340657-2049868223.png


2、参考代码


 # coding=utf-8
  #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  #2.注释:包括记录创建时间,创建人,项目名称。
  '''
  Created on 2019-4-28
  @author: 北京-宏哥
  Project:学习和使用unittest框架设计登录测试用例和断言-下篇
  '''
 #3.导入requests和unittest模块
 import requests
 import unittest
 #4.编写测试用例和断言
 class Blog_login(unittest.TestCase):
     def login(self, username, psw):
         '''两个个参数:账号:username,密码:psw'''
         url = "https://api.apiopen.top/developerLogin"
         par = {"name": username,
                "passwd": psw
         }
         res = requests.post(url, params=par)
 #        result1 = res.text  # 字节输出
 #        print(result1)
         return res.json()
     def test_login1(self):
         '''测试登录:正确账号,正确密码'''
         username = "peakchao",  # 正确账号,抓包获得的加密字符串
         psw = "123456",  # 正确密码,抓包获得的加密字符串
        result = self.login(username, psw)
         self.assertEqual(200,result['code'])
         print(result['message'])
     def test_login2(self):
         '''测试登录:正确账号,错误密码;反之也可以设计用例'''
         username = "peakchao",#正确账号
         psw = "122222",#错误密码
         result = self.login(username, psw)
         self.assertEqual(result['code'], 400)
         print(result['message'])
     def test_login3(self):
         '''测试登录:账号为空,正确密码;反之也可以设计用例'''
         username = "",  # 错误账号
         psw = "123456",  # 正确密码
         result = self.login(username, psw)
         self.assertEqual(result['code'], 400)
         print(result['message'])
 if __name__ == "__main__":
  unittest.main()


无接口文档


1、在实际工作中由于某些原因开发人员不能按时给出接口文档,但是接口已经开发好了,需要测试人员提前介入,此时你又不能等接口文档写好了再开始测试,那样黄花菜都凉了,还有就是接口文档有是有,但是没有人更新和维护,如果你按

照旧文档保证是会出错,或者接口不通。所以我们必须采用另一种方式开始测试接口。


2、那就是我们自己通过fiddler抓包获取url和接口的参数以及返回结果等等,还是由于博客园的登录机制的改变,我在这了一jenkins登录接口为例给小伙伴们演示一下。


3、大致流程:web页面jenkins点击登录—>fiddler抓包获取登录接口URL和参数—>从fiddler查看登录接口返回的结果—>代码模拟登录接口并获取接口登录返回结果—>设计登录接口测试用例—>断言并执行用例


4、web页面jenkins点击登录


1232840-20190428093018035-710689636.png


5、fiddler抓包获取登录接口URL和参数


1232840-20190428093253185-1945823672.png


6、从fiddler查看登录接口返回的结果


1232840-20190428093340762-1848257507.png


7、代码模拟登录接口并获取接口登录返回结果

1232840-20190428101738005-1279406397.png


8、设计登录接口测试用例

1232840-20190428101806892-1174445873.png


9、断言并执行用例

1232840-20190428101840995-1238924574.png


10、参考代码


 # coding=utf-8
  #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  #2.注释:包括记录创建时间,创建人,项目名称。
  '''
 Created on 2019-4-28
  @author: 北京-宏哥
  Project:学习和使用unittest框架设计jenkins登录测试用例和断言-下篇
  '''
 #3.导入requests和unittest模块
import requests
 import unittest
 #4.编写测试用例和断言
 class Jenkins_login(unittest.TestCase):
     def login(self, username, psw):
         '''从fiddler抓包看到事个参数:
         账号:j_username,密码:j_password,from,Submit,remember_me
         '''
         url = "http://localhost.:8080/jenkins/j_acegi_security_check"
         headers = {
             "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
         }  # get方法其它加个ser-Agent就可以了
         par = {"j_username": username,
              "j_password": psw,
              "from": "",
              "Submit": u"登录",
              "remember_me": "on"
         }
         res = requests.post(url, headers=headers, data=par)
         result = res.url  # 字节输出
         print(result)
         result1 = res.status_code
         print(result1)
         return res.status_code
     def test_login1(self):
         '''测试登录:正确账号,正确密码'''
         username = "admin",  # 正确账号,抓包获得的加密字符串
         psw = "111111",  # 正确密码,抓包获得的加密字符串
         result = self.login(username, psw)
         self.assertEqual(200,result)
     def test_login2(self):
         '''测试登录:正确账号,错误密码;反之也可以设计用例'''
         username = "admin",#正确账号
         psw = "122222",#错误密码
         result = self.login(username, psw)
         self.assertEqual(result, 404)
     def test_login3(self):
         '''测试登录:账号为空,正确密码;反之也可以设计用例'''
         username = "",  # 错误账号
         psw = "111111",  # 正确密码
         result = self.login(username, psw)
         self.assertEqual(result, 404)
 if __name__ == "__main__":
  unittest.main()


小结



1、fiddler抓取本地部署的jenkins登录请求时,抓取不到,但是百度可以抓取到,解决方法:


(1)使用http://localhost.fiddler 代替http://localhost

(2)使用用 http://localhost. 在locahost后面加一个点号

(3)使用 http://127.0.0.1.  在127.0.0.1后面加一个点号

(4)使用 http://machinename  使用机器名

(5)打开Fiddler,菜单>Fiddler Options>General>Enable IPv6(if avaible)去掉该选项。

(6)在hosts文件中加入127.0.0.1  localsite这样也可以被捕获到。



目录
打赏
0
0
0
2
155
分享
相关文章
深入解析:使用 Python 爬虫获取淘宝店铺所有商品接口
本文介绍如何使用Python结合淘宝开放平台API获取指定店铺所有商品数据。首先需注册淘宝开放平台账号、创建应用并获取API密钥,申请接口权限。接着,通过构建请求、生成签名、调用接口(如`taobao.items.search`和`taobao.item.get`)及处理响应,实现数据抓取。代码示例展示了分页处理和错误处理方法,并强调了调用频率限制、数据安全等注意事项。此技能对开发者和数据分析师极具价值。
|
3月前
|
【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈
【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈
201 1
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
Python测试淘宝店铺所有商品接口的详细指南
本文详细介绍如何使用Python测试淘宝店铺商品接口,涵盖环境搭建、API接入、签名生成、请求发送、数据解析与存储、异常处理等步骤。通过具体代码示例,帮助开发者轻松获取和分析淘宝店铺商品数据,适用于电商运营、市场分析等场景。遵守法规、注意调用频率限制及数据安全,确保应用的稳定性和合法性。
Python自动化Office文档处理全攻略
本文介绍如何使用Python自动化处理Word、Excel和PDF文档,提升办公效率。通过安装`python-docx`、`openpyxl`、`pandas`、`PyPDF2`和`pdfplumber`等库,可以轻松实现读取、修改、创建和批量处理这些文档。具体包括:自动化处理Word文档(如读取、修改内容、调整样式),Excel文档(如读取、清洗、汇总数据),以及PDF文档(如提取文本和表格数据)。结合代码示例和实战案例,帮助你掌握高效办公技巧,减少手动操作的错误率。
80 1
python 群晖nas接口(一)
这段代码展示了如何通过群晖NAS的API获取认证信息(SID)并列出指定文件夹下的所有文件。首先,`get_sid()`函数通过用户名和密码登录NAS,获取会话ID(SID)。接着,`list_file(filePath, sid)`函数使用该SID访问FileStation API,列出给定路径`filePath`下的所有文件。注意需替换`yourip`、`username`和`password`为实际值。
139 19
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
141 16
Python时间序列分析:使用TSFresh进行自动化特征提取
|
2月前
|
python泛微e9接口开发
通过POST请求向指定IP的API注册设备以获取`secrit`和`spk`。请求需包含`appid`、`loginid`、`pwd`等头信息。响应中包含状态码、消息及`secrit`(注意拼写)、`secret`和`spk`字段。示例代码使用`curl`命令发送请求,成功后返回相关信息。
57 5
python 群晖nas接口(二)
这段代码展示了如何通过API将文件上传到群晖NAS。它使用`requests`库发送POST请求,指定文件路径、创建父级目录及覆盖同名文件的参数,并打印上传结果。确保替换`yourip`和`sid`为实际值。
101 2
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
165 15

热门文章

最新文章