接口自动化初步实践(九)之Unittest断言

发布于:2022-11-29 ⋅ 阅读:(245) ⋅ 点赞:(0)

前言

针对上文,初步尝试了unittest的使用方式,但是依然存在很多的知识点未补充,导致大部分代码还是存在疑问。本文将开始一步一步讲解unittest基础知识,慢慢解决之前文章中提出的问题

一、断言简介

回顾上篇的代码逻辑。

import unittest
import requests

class RequestsTest(unittest.TestCase):
    def test_request_username(self):
        url = "http://127.0.0.1:5000/get"
        res = requests.get(url).json()
        self.assertEqual("了不起的QA", res["username"])
        
if __name__ == "__main__":
    unittest.main()

我们在代码里用了 self.assertEqual() 来判断接口返回值 res[“username”] 和 字符串"了不起的QA" 是否相等。
其中 self.assertEqual() 就是unittest的断言。断言类型有很多,覆盖全面,基本都是字面意思,通俗易懂。
总结如下表

方法 检查
assertEqual(a, b) a ==b
assertNotEqual(a, b) a !=b
assertTrue(x) bool(x) is True
assertFalse(x) Bool(x) is False
assertIs(a, b) a is b
assertIsNot(a, b) a is not b
assertIsNone(x) x is None
assertIsNotNone(x) x is not None
assertIn(a, b) a in b
assertNotIn(a, b) a not in b
assertIsInstance(a, b) isinstance(a,b)
assertNotIsInstance(a, b) not isinstance(a,b)

接下来我们挑一些常用方法举例,跟着例子慢慢熟悉使用方式

二、代码实践

新建一个unittestTest.py文件
如下:

import unittest


class UnittestTest(unittest.TestCase):

    def test_01(self):
        # 断言是否为真
        flag = True
        self.assertTrue(flag)

    def test_02(self):
        # 断言是否为假
        flag = False
        self.assertFalse(flag)

    def test_03(self):
        # 断言两个变量值是否相同
        flag1 = 1
        flag2 = 2
        self.assertEqual(flag1, flag2)

    def test_04(self):
        # 断言两个字典是否相等
        data1 = {"username": "了不起的QA", "password": "123"}
        data2 = {"username": "了不起的GD", "password": "1234"}
        self.assertDictEqual(data1, data2)

    def test_05(self):
        # 断言变量是否与类型定义相同
        data1 = {"username": "了不起的QA", "password": "123"}
        self.assertIsInstance(data1, str)


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

运行以上代码
在这里插入图片描述

看的出来,在失败case里,打印出的报错内容明确指向了错误原因,而成功case里,没有任何信息展示。
这部分代码展示了基本的断言如何实现。可以将上述代码全部改成所有case通过的情况进一步数据代码。也可以将上表格内的断言全部实现一次,巩固知识点。
下一篇,介绍unittest的前置,后置如何实现。

三、总结

了不起的QA,gz号,了解更多!!

本文含有隐藏内容,请 开通VIP 后查看