功能测试步骤
1.写用例 TestCase。
2.执行用例 1:TestSuite 存储用例 2:TestLoader 找用例,加载用例,存到1的TestSuite
3.对比实际结果,期望结果 判定用例是否通过:断言 Assert
4.出具测试报告 TextTestRunner
unittest使用步骤
1.写测试用例:创建类,类继承unittest.TestCase。
(1)一个用例就是一个函数,不能传参,只有self关键字。
(2)所有的用例,所有的函数都是以test开头,如test_abc。
(3)默认执行测试用例的顺序,是按照函数名称的ASCII编码进行执行的。
import unittest
from testUnittest.mathMethod import MathMethod
"""
1.继承TestCase类
"""
class TestMethod(unittest.TestCase):
"""
每个方法是一个测试用例,方法不能有除了self的参数
"""
def test_add_two_position(self):
try:
self.assertEqual(MathMethod().add(1, 4), 5)
except AssertionError as e:
print("不等于4")
raise e
def test_add_two_negative(self):
try:
self.assertEqual(MathMethod().add(-1, -2), -3)
except AssertionError as e:
print("-3不等于-4")
raise e
def test_add_two_negative1(self):
try:
self.assertEqual(MathMethod().add(-1, -2), -3)
except AssertionError as e:
print("-3不等于-4")
raise e
if __name__ == '__main__':
unittest.main()
2.执行测试用例
(1)直接执行的,在判断语句main中执行语句unittest.main() # 默认执行当前文件的用例
(2)使用测试套件执行。可执行用例级别,或者套件级别的用例。
import unittest
from testUnittest.testMathMethod import TestMethod
suite = unittest.TestSuite()
# 方法一:指定特定的测试用例执行
# addTest中的参数,是实例化TestCase,实例化过程中的参数是指定的执行的用例
suite.addTest(TestMethod("test_add_two_position"))
suite.addTest(TestMethod("test_add_two_position"))
runner = unittest.TextTestRunner()
runner.run(suite)
import unittest
from testUnittest import testMathMethod
from testUnittest.testMathMethod import TestMethod
suite = unittest.TestSuite()
# 方法一:指定特定的测试用例执行
# addTest中的参数,是实例化TestCase,实例化过程中的参数是指定的执行的用例
# suite.addTest(TestMethod("test_add_two_position"))
# suite.addTest(TestMethod("test_add_two_position"))
#
# runner = unittest.TextTestRunner()
# runner.run(suite)
# 方法二:使用Loader加载器先寻找用例,再执行用例
loader = unittest.TestLoader()
# 参数是测试用例集的py文件
module = loader.loadTestsFromModule(testMathMethod)
suite.addTest(module)
runner = unittest.TextTestRunner()
runner.run(suite)
# 方法三,通过选择路径,匹配要执行的py文件
discover = unittest.defaultTestLoader.discover("./","test*.py")
unittest.TextTestRunner().run(discover)
3.断言
常用断言方法是:self.assert*()
4.出具测试报告
# 使用with,当使用资源时,可以自动关闭文件操作。result.txt保存在当前的文件下
with open("result.txt","w+",encoding="utf-8") as file:
# verbosity 值越高,越详细 值只有0,1,2
runner = unittest.TextTestRunner(stream=file, descriptions=True, verbosity=2)
runner.run(suite)
前置和后置操作&&常用的注解
setUp/tearDown 是在执行方法时要执行的操作
setUpClass/tearDownClass 是在执行类时要执行的操作,需要注意的是:使用该方法时,参数为cls,并且要添加注解@classmethod
跳过用例:添加注解@unittest.skip,可以给这个跳过用例添加条件,@unittest.skipIf(1+1==2,"跳过给该用例")
浙公网安备 33010602011771号