单元测试 - noonecare/python GitHub Wiki
python 单元测试
包/frameworks
我一般会用 nosetests(nosetests 名称反映了特点,就是 nosetests 能自动找出 test。就像狗鼻子那么灵敏),简单而且更符合 python 的编程习惯。
-
nosetests
- 写起来非常简单, 可以写成类,也可以写成函数。
- 根据命名规则自动发现 test 并执行。默认地以 test 或者 Test 开头的变量都会被 nosetests 识别为 test。
- setup( teardown )方法是执行每个 test 时都会预先执行( 在最后执行的 )方法。
-
unittest
- 几乎与 junit 的写法完全一致
- setUp( tearDown )方法是执行每个 test 时都会预先执行( 在最后执行的 )方法。
mock and testfixtures
Pycharm 支持
使用 Pycharm 可以极大方便我们运行和调试测试用例。
-
运行
- 可以选择执行那些 test, 选择一个类,这个类所有的 test 都会被执行。选择一个路径(python 中路径也是 module),这个路径下所有的 test 都会执行。选择一个 test 函数, 这个 test 函数被执行。选择一个 test 方法,这个 test 方法将被执行。
-
调试
- 和运行一样可以选择调试哪些 test。
- 可以设置断点
- 在断点处,可以运行 evaluate, 查看当前各个变量的值。
- 在断点处,可以单步执行,可以只在自己写的代码中单步执行,可以执行 resume 到下一个断点。
- 除了 evalute, 还可以在断点处打开 console,用 console 在当前的 变量环境下执行代码。
- 可以设置 watcher
-
切换 testrunner
- settings -> tools -> Python Integrated Tools -> Default test runner 我可以在这里选择用 Nosetesets 还是 Unittest 还是其他什么。
-
编辑 run/debug configuration
pdb debugger.
pdb debugger: python standard library 中自带的 pdb 调试工具,可以在命令行下调试 python 程序。
- pdb 没有 pycharm 的 debugger 功能强大,pdb 最大的好处就是,只要你装了 python, 你肯定能找到 pdb 调试工具。
- pdb 没有 watcher, 但是设置 break point (b), 单步执行(n) 等等功能都有。
- 使用 pdb 时,执行 python -m pdb <python_file_to_debug>
- 对于 pdb 简单了解即可。