前言
针对上文,初步尝试了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 后查看