〖Python接口自动化测试实战篇⑩〗- 测试框架 unittest 的小实战案例

点击下方图片有惊喜,精美礼品等你来拿哦

〖Python接口自动化测试实战篇⑩〗- 测试框架 unittest 的小实战案例

〖Python接口自动化测试实战篇⑩〗- 测试框架 unittest 的小实战案例

前言
✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS 赋能的博主 ✌
🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦

专栏系列(点击解锁)学习路线指引知识定位
🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。
语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。
自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。
自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。
数据库开发实战篇 更新中
爬虫入门与实战 更新中
数据分析篇 更新中
前端入门+flask 全栈篇 更新中
django+vue全栈篇 更新中
拓展-人工智能入门 更新中
网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者
网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。
vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。
shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结]
WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
点点点工程师 测试神器 – Charles 软件测试数据包抓包分析神器
测试神器 – Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得!
测试神器 – Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。
RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。
Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。
MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。
〖Python接口自动化测试实战篇⑩〗- 测试框架 unittest 的小实战案例

就像大家在学习开发的时候,尽管我们已经知道了、学会了 python 的基本语法,但是要真正的开发一套接口、开发一个底层的时候仍然需要像 Django 这样的一套框架来支撑自己的代码,来提供相应的服务;

接口测试也是类似,如果仅仅使用脚本的话会有很多的限制,所以接口测试也需要用到这样的框架,其实这里所使用的框架与在开发中所使用的单元测试是非常类似的,比较常用的测试框架有两种,比较常见的就是 unittestpytest

在实际项目中,两者都可以使用。 unittest 相对而言有它自己的优势,就我们从头开始学习接口测试而言,可以先不去掌握 pytest 更多的封装和更多的功能,掌握好 Python 自带 unittest 单元测试框架就OK了。

接下来再这一章节,我们将三个角度来了解 unittest 框架。

🐳 unittest 框架的意义与特点

🐬 使用 unittest 的意义在哪里

  • 为什么要使用 unittest ?
    • 因为在正式编写接口自动化测试用例的时候,如果像上一章节那样写,一般是针对一个接口或者一个流程建立一个 xxx.py 文件。
    • 一条用例封装成一个函数的情况下,在批量执行的过程中;如果说其中某一条数据出错了,那后面的用例可能就没有办法执行了,互相之间会产生影响。
    • 所以呢,使用 unittest 测试框架可以互不影响的执行用例,同时能够更灵活的进行执行的控制。

🐬 unittest 的特点

  • unittest 测试框架应用在接口测试上的优点非常的显而易见,因为它是 python 自带的测试框架,无需再进行特殊的安装。
  • 就像上面说的一样,在 unittest 测试框架下的测试用例的执行,可以互不干扰,同时能够更灵活的组织测试用例。
  • unittest 和所有的单元测试框架一样,拥有丰富的比较完善的单元方法,能够帮助我们完成接口测试用例的验证工作。

🐳 unittest 框架的组成部分

  • 第一部分:TestCase —> 用例对象,编写测试用例时要继承该类
  • 第二部分:TestSuite —> 测试集(也叫做测试套件),它是一系列测试用例的集合。可以用来组织用例,也支持嵌套批量运行。
  • 第三部分:TestLoader —> 用例加载器,是 unittest de 一种加载方式,可以向 TestSuite 中添加用例。
  • 第四部分:TextTestRunner —> 用例执行器,输出的是类似文本的结果,一般都是以 TestSuite 为单位来执行测试用例。
  • 第五部分:TestResult —> 测试结果。

我们需要学习的重点不是去深层的扒这些功能代码的逻辑,而是要学会这些功能的简单的使用即可。

🐳 完成一个简单的 unittest 用例脚本

OK,接下来我们就针对上一章节所写的关于旅游网的接口测试用例利用 unittest 进行该写。

PS:需要注意的地方,创建脚本文件时应选择 "Python unit test" 而不是我们平时所选择的 "Python file" ,并所有的文件名,必须以 "test_" 开头。创建完成后,会自动生成 "MyTestCase" 类、"test_something" 函数 以及主方法。 如下图:

〖Python接口自动化测试实战篇⑩〗- 测试框架 unittest 的小实战案例
〖Python接口自动化测试实战篇⑩〗- 测试框架 unittest 的小实战案例

下面就来尝试编写几条登录接口的测试 Case 吧。

代码示例如下:

import unittest
import requests


class TestAccount(unittest.TestCase):

    def test_login_normal(self):    # 正常的登录
        phone = "13770000000"
        password = "123456"

        url_login = "http://trip.imooc.zhaedu.com/api/accounts/user/login/"  # 登录API
        data_login = {"username": phone, "password": password}  # 定义登录API传入信息
        res_login = requests.post(url=url_login, data=data_login)
        print("登录信息:", res_login.text)
        cookies = requests.utils.dict_from_cookiejar(res_login.cookies)  # 获取 cookie
        print("登录cookies:", cookies)

    def test_login_abnormal(self):    # 不正常的登录
        phone = "13770000000"
        password = "12345678"         # 密码不正确

        url_login = "http://trip.imooc.zhaedu.com/api/accounts/user/login/"  # 登录API
        data_login = {"username": phone, "password": password}  # 定义登录API传入信息
        res_login = requests.post(url=url_login, data=data_login)
        print("登录信息:", res_login.text)
        cookies = requests.utils.dict_from_cookiejar(res_login.cookies)  # 获取 cookie
        print("登录cookies:", cookies)


if __name__ == '__main__':
    unittest.main()

上文中的脚本就是登录接口的两个测试用例,一个是正常登录的 Case ,另一个是密码错误的 Case 。

运行结果如下:

〖Python接口自动化测试实战篇⑩〗- 测试框架 unittest 的小实战案例

从上图中的执行结果来看我们发现了两点:

  • 第一:Python unit test 文件的脚本是在 unittest 框架中运行的。

  • 第二:两条登录的 Case 的运行顺序并不是按照我们写好的函数的顺序来执行的,这是因为 unittest 框架运行用例的顺序是按照用例名的 ASCII 码的书序来执行的。如果将 test_login_abnormal 函数名改为 test_login_wrong ,这样的话执行顺序就会发生改变,可以自己尝试一下。

当我们想要改变用例的顺序,或者说我们并不知道那个用例验证的是为真的结果,这个时候应该怎么样去做验证呢?这就涉及到了另外一个知识点,那就是 unittest 框架的断言,这个内容将在我们的下一章节为大家进行详细的介绍。

拜了个拜......

〖Python接口自动化测试实战篇⑩〗- 测试框架 unittest 的小实战案例

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年3月5日 下午10:30
下一篇 2023年3月5日 下午10:31

相关推荐