在接口自动化测试中,断言(Assertion)是非常重要的一部分。通过对接口的返回结果进行断言,我们可以确认接口是否返回了正确的数据,从而验证接口的正确性。
为了提高代码的可读性和可维护性,我们通常会将常用的断言封装成函数或类,以便在不同的测试用例中复用。本篇文章将详细介绍如何从零开始编写一个规范的接口自动化测试框架中的断言封装。
1. 断言函数的基本结构
一个基本的断言函数通常应该包括以下几个步骤:
- 获取接口返回的实际结果
- 获取预期结果
- 对比实际结果和预期结果,判断是否相等
- 如果不相等,抛出异常
下面是一个示例的断言函数的基本结构:
def assert_equal(actual, expected):
if actual != expected:
raise AssertionError(f"Actual: {actual}, Expected: {expected}")
在这个示例中,我们使用 if
语句对比实际结果和预期结果,如果不相等,就抛出 AssertionError
异常,并在异常信息中输出实际结果和预期结果。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】
2. 添加更多的断言函数
在实际的测试中,我们通常需要对不同的类型的数据进行断言,比如对字符串、整数、浮点数等进行比较。为了方便使用,我们可以添加更多的断言函数,以支持不同类型的数据比较。
下面是一些常用的断言函数示例:
def assert_equal(actual, expected):
if actual != expected:
raise AssertionError(f"Actual: {actual}, Expected: {expected}")
def assert_not_equal(actual, expected):
if actual == expected:
raise AssertionError(f"Actual: {actual}, Expected: {expected}")
def assert_true(condition):
if not condition:
raise AssertionError(f"Condition is not True")
def assert_false(condition):
if condition:
raise AssertionError(f"Condition is not False")
def assert_contains(container, item):
if item not in container:
raise AssertionError(f"Item: {item} is not in container")
def assert_not_contains(container, item):
if item in container:
raise AssertionError(f"Item: {item} is in container")
通过添加这些断言函数,我们可以在测试用例中更方便地进行断言操作。
3. 封装断言类
如果我们的断言函数越来越多,为了更好地组织和管理这些函数,我们可以将它们封装成一个断言类。通过断言类,我们可以更方便地调用断言函数。
下面是一个简单的断言类的示例:
class Assert:
@staticmethod
def equal(actual, expected):
if actual != expected:
raise AssertionError(f"Actual: {actual}, Expected: {expected}")
@staticmethod
def not_equal(actual, expected):
if actual == expected:
raise AssertionError(f"Actual: {actual}, Expected: {expected}")
@staticmethod
def true(condition):
if not condition:
raise AssertionError(f"Condition is not True")
@staticmethod
def false(condition):
if condition:
raise AssertionError(f"Condition is not False")
@staticmethod
def contains(container, item):
if item not in container:
raise AssertionError(f"Item: {item} is not in container")
@staticmethod
def not_contains(container, item):
if item in container:
raise AssertionError(f"Item: {item} is in container")
通过断言类,我们可以更方便地调用断言函数:
Assert.equal(actual, expected)
Assert.true(condition)
Assert.contains(container, item)
4. 使用断言函数进行测试
在编写测试用例时,我们可以使用断言函数进行断言,判断接口是否返回了正确的数据。
例如,假设我们有一个获取用户信息的接口 /api/user
,返回的结果应该是一个字典,其中包含用户的姓名和年龄。我们可以编写以下测试用例进行断言:
def test_get_user_info():
response = requests.get("/api/user")
data = response.json()
Assert.equal(data["name"], "John")
Assert.equal(data["age"], 30)
在这个示例中,我们发送了一个 GET 请求获取用户信息,然后使用断言函数判断返回的结果是否正确。
总结
通过封装常归断言函数,我们可以更好地组织和管理断言代码,提高代码的可读性和可维护性。在编写接口自动化测试框架时,合理使用断言函数可以让我们的测试代码更加规范和高效。希望本文对你有所帮助!
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!