我如何搭建自动化测试框架_08 断言
参考自:https://docs.python.org/zh-cn/3/library/unittest.html?highlight=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 | 3.1 |
assertIsNot(a, b) | a is not b | 3.1 |
assertIsNone(x) | x is None | 3.1 |
assertIsNotNone(x) | x is not None | 3.1 |
assertIn(a, b) | a in b | 3.1 |
assertNotIn(a, b) | a not in b | 3.1 |
assertIsInstance(a, b) | isinstance(a, b) | 3.2 |
assertNotIsInstance(a, b) | not isinstance(a, b) | 3.2 |
上面就是断言的使用方法以及那个解释啦!!
还有一些其他的专门一点的
方法 | 检查对象 | 引入版本 |
---|---|---|
assertRaises(exc, fun, *args, **kwds) | fun(*args, **kwds) 引发了 exc | |
assertRaisesRegex(exc, r, fun, *args, **kwds) | fun(*args, **kwds) 引发了 exc 并且消息可与正则表达式 r 相匹配 | 3.1 |
assertWarns(warn, fun, *args, **kwds) | fun(*args, **kwds) 引发了 warn | 3.2 |
assertWarnsRegex(warn, r, fun, *args, **kwds) | fun(*args, **kwds) 引发了 warn 并且消息可与正则表达式 r 相匹配 | 3.2 |
assertLogs(logger, level) | with 代码块在 logger 上使用了最小的 level 级别写入日志 | 3.4 |
assertNoLogs(logger, level) | with 代码块没有在logger 上使用最小的 level 级别写入日志 | 3.10 |
更加专门的
方法 | 检查对象 | 引入版本 |
---|---|---|
assertAlmostEqual(a, b) | round(a-b, 7) == 0 | |
assertNotAlmostEqual(a, b) | round(a-b, 7) != 0 | |
assertGreater(a, b) | a > b | 3.1 |
assertGreaterEqual(a, b) | a >= b | 3.1 |
assertLess(a, b) | a < b | 3.1 |
assertLessEqual(a, b) | a <= b | 3.1 |
assertRegex(s, r) | r.search(s) | 3.1 |
assertNotRegex(s, r) | not r.search(s) | 3.2 |
assertCountEqual(a, b) | a 和 b 具有同样数量的相同元素,无论其顺序如何。 | 3.2 |
一些其他的
方法 | 用作比较 | 引入版本 |
---|---|---|
assertMultiLineEqual(a, b) | 字符串 | 3.1 |
assertSequenceEqual(a, b) | 序列 | 3.1 |
assertListEqual(a, b) | 列表 | 3.1 |
assertTupleEqual(a, b) | 元组 | 3.1 |
assertSetEqual(a, b) | 集合 | 3.1 |
assertDictEqual(a, b) | 字典 | 3.1 |
来看看使用例子
import unittest
from utils.config import Config, REPORT_PATH
from utils.client import HTTPClient
from utils.log import logger
from utils.HTMLTestRunner import HTMLTestRunner
from utils.assertion import assertHTTPCode
class TestBaiDuHTTP(unittest.TestCase):
URL = Config().get('URL')
def setUp(self):
self.client = HTTPClient(url=self.URL, method='GET')
def test_baidu_http(self):
res = self.client.send()
logger.debug(res.text)
assertHTTPCode(res, [400])
self.assertIn('百度一下,你就知道', res.text)
if __name__ == '__main__':
report = REPORT_PATH + '\\report.html'
with open(report, 'wb') as f:
runner = HTMLTestRunner(f, verbosity=2, title='从0搭建测试框架 灰蓝', description='接口html报告')
runner.run(TestBaiDuHTTP('test_baidu_http'))
————————————————
版权声明:本文为CSDN博主「huilan_same」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/huilan_same/article/details/77367275
从diamante可以看出,断言函数其实是来自于unittest框架的,所以如果对unittest进行封装之后,也还是使用self.assertXXX来使用.这样子有一个好处就是很多功能就是可以直接有框架去集成,就比较方便啦!!