三步学会用 python+unittest 搭建简易的接口测试框
目录:
一、基础入门
二、测试用例的命名规则
三、测试用例在文件中的执行先后顺序
四、测试脚手架
五、命令行运行
一、基础入门
"""
unittest 练习
unittest 是Python 自带的模块,不需要安装,可以直接使用。
"""
import unittest
# 继承TestCase 类
class TestDemo(unittest.TestCase):
# 测试用例
def test_01(self):
print('01')
self.assertTrue(False)
def test_02(self):
print('02')
if __name__ == '__main__':
unittest.main() # unittest 的执行
运行结果
01
02
F.
======================================================================
FAIL: test_01 (__main__.TestDemo)
----------------------------------------------------------------------Traceback (most recent call last):
File "C:/Users/zengy/Documents/fanmao/20/apptest01/
003.py", line 13, in test_01
self.assertTrue(False)
AssertionError: False is not true
----------------------------------------------------------------------
Ran 2 tests in 0.001s
FAILED (failures=1)
Process finished with exit code 1( 想了解测试内容可加我QQ:1844835571)
二、测试用例的命名规则
测试用例的命名规则为定义方法名以 test 开头。
import unittest
# 继承TestCase 类
class TestDemo(unittest.TestCase):
"""
测试用例的命名规则为 test 开头
"""
# 测试用例
def test_01(self):
print('01')
self.assertTrue(False)
def test_02(self):
print('02')
def test03(self):
assert True
# 普通方法,不能作为测试用例被执行
def add(self):
print('add')
# 普通方法,不能作为测试用例被执行
def addtest(self):
assert True
# 普通方法,不能作为测试用例被执行
def add_test(self):
assert Tru
if __name__ == '__main__':
unittest.main() # unittest 的执行
三、测试用例在文件中的执行先后顺序
排序规则,不是你在文件中定义case的先后顺序,而是根据执行过程中定义的case名称来排序:
测试用例的执行先后顺序:
● 数字顺序 0-9
● 下划线 _
● 英文字符 A-Z a-z
import unittest
class Demo4(unittest.TestCase):
"""
测试用例的执行先后顺序:
数字顺序 0-9
下划线 _
英文字符 A-Z a-z
"""
def test_01_add_topic(self):
assert True
def test_02_update_topic(self):
assert Tru
def test_03_detail_topic(self):
assert True
def test_04_collect_topic(self):
assert True
if __name__ == '__main__':
unittest.main(verbosity=2) # 显示详细的运行日志级别
四、测试脚手架
测试用例级别:
● setUp 定义每个用例运行之前的操作
● tearDown 定义每个用例运行之后的操作
整个class 级别
● setUpClass 运行class 之前
● tearDownClass 运行class 之后
"""
test fixture 测试脚手架
"""
import unittest
class Demo5(unittest.TestCase):
"""
每个测试用例执行之前和之后的操作
测试用例级别:
setUp 定义每个用例运行之前的操作( 想了解测试内容可加我QQ:1844835571)
tearDown 定义每个用例运行之后的操作
整个class 级别
setUpClass 运行class 之前
tearDownClass 运行class 之后
"""
def setUp(self) -> None:
print('运行方法之前')
def tearDown(self) -> None:
print("运行方法之后执行")
@classmethod
def setUpClass(cls) -> None:
print('运行类里面所有的case 之前')
@classmethod
def tearDownClass(cls) -> None:
print('运行类里面所有的case 之后')
def test_run1(self):
print("现在开始运行run1")
def test_run2(self):
print("现在开始运行run2")
if __name__ == '__main__':
unittest.main(verbosity=2)
五、命令行运行
● -m 指定模块
● -v 显示日志详情
命令行运行 主要用作调试。
1、运行多个模块
运行004.py 和005.py两个文件中所有的case
python -m unittest 004.py 005.py -v
2、运行005中的Demo5_2 类
python -m unittest 005.Demo5_2 -v
3、运行类中单独测试用例
运行005.py文件中 Demo5_2 class 的 test_run2 方法
python -m unittest 005.Demo5_1.test_run2 -v