命令行操作、断言方法
目录
- 1、命令行操作
- 1.1、执行测试模块
- 1.2、执行测试类
- 1.3、执行测试方法
- 1.4、打印详细信息
- 1.5、自动搜索执行
- 2、断言方法
1、命令行操作
命令行操作示例使用已经创建好的test_Demo.py文件做为演示。
脚本代码:
代码语言:javascript复制#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 导入unittest模块
import unittest
"""
基本示例
"""
# 定义测试类,父类为unittest.TestCase
class TestDemo(unittest.TestCase):
# 必须使用@classmethod装饰器,所有test运行前执行一次
@classmethod
def setUpClass(cls):
print('setUpClass')
# 必须使用@classmethod装饰器,所有test运行完后执行一次
@classmethod
def tearDownClass(cls):
print('tearDownClass')
# 每个测试方法运行前执行
def setUp(self):
print('setUp')
# 每个测试方法运行完后执行
def tearDown(self):
print('tearDown')
# 所有的测试方法都要以test为开头
def test_case1(self):
print('test_case1')
def test_case2(self):
print('test_case2')
def test_case3(self):
print('test_case3')
if __name__ == '__main__':
unittest.main()
1.1、执行测试模块
python -m unittest test_module1 test_module2
例如:python -m unittest test_Demo
运行结果:执行测试模块test_Demo。
1.2、执行测试类
python -m unittest test_module.TestClass
例如:python -m unittest test_Demo.TestDemo
运行结果:执行测试模块test_Demo里的TestDemo测试类。
1.3、执行测试方法
python -m unittest test_module.TestClass.test_method
例如:python -m unittest test_Demo.TestDemo.test_case2
运行结果:执行测试模块test_Demo里的TestDemo测试类里的test_case2测试方法。
1.4、打印详细信息
在执行测试模块/类/方法时,可加-v参数打印详细信息。
python -m unittest -v test_module
例如:python -m unittest -v test_Demo
运行结果:执行测试模块test_Demo,打印详细信息。
1.5、自动搜索执行
unittest支持简单的测试搜索。命令进入项目后,框架会自动在当前目录搜索要测试的用例并执行。搜索目录必须是包或者模块,测试用例文件的默认匹配规则为test*.py。
python -m unittest discover
运行结果:当前项目目录只有一个模块(test_Demo.py)。
参数如下:
-v, –verbose 输出信息的详细级别
-s, –start-directory directory 开始搜索目录(默认为当前目录)
-p, –pattern pattern 匹配的文件名(默认为test*.py)
-t, –top-level-directory directory 搜索的顶层目录(默认为start directory)
例如:python -m unittest discover –v
运行结果:执行输出详细信息。
2、断言方法
在执行测试用例的过程中,最终用例是否执行通过,是通过判断测试得到的实际结果和预期结果是否相等决定的,这时会用到断言方法。
常用的断言方法:
代码语言:javascript复制assertEqual(a,b,[msg='测试失败时打印的信息']) 断言a和b是否相等,相等则测试用例通过。
assertNotEqual(a,b,[msg='测试失败时打印的信息']) 断言a和b是否相等,不相等则测试用例通过。
assertTrue(x,[msg='测试失败时打印的信息']) 断言x是否True,是True则测试用例通过。
assertFalse(x,[msg='测试失败时打印的信息']) 断言x是否False,是False则测试用例通过。
assertIs(a,b,[msg='测试失败时打印的信息']) 断言a是否是b,是则测试用例通过。
assertNotIs(a,b,[msg='测试失败时打印的信息']) 断言a是否是b,不是则测试用例通过。
assertIsNone(x,[msg='测试失败时打印的信息']) 断言x是否None,是None则测试用例通过。
assertIsNotNone(x,[msg='测试失败时打印的信息']) 断言x是否None,不是None则测试用例通过。
assertIn(a,b,[msg='测试失败时打印的信息']) 断言a是否在b中,在b中则测试用例通过。
assertNotIn(a,b,[msg='测试失败时打印的信息']) 断言a是否在b中,不在b中则测试用例通过。
assertIsInstance(a,b,[msg='测试失败时打印的信息']) 断言a是否是b的一个实例,是则测试用例通过。
assertNotIsInstance(a,b,[msg='测试失败时打印的信息']) 断言a是否是b的一个实例,不是则测试用例通过。
1、创建AssertDemo.py文件,脚本代码:
代码语言:javascript复制#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 导入unittest模块
import unittest
"""
断言方法
"""
# 定义测试类,父类为unittest.TestCase
class TestDemo(unittest.TestCase):
def test_case1(self):
self.assertEqual(1 1,2,'用例失败')
def test_case2(self):
self.assertEqual(1 1,3,'用例失败')
if __name__ == '__main__':
unittest.main(verbosity=2)
2、执行AssertDemo.py文件,运行结果:
test_case1方法断言成功;
test_case2方法断言失败。