-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ How-to ] 如何写单元测试 #42
Labels
Comments
尽量使用with 或者decorator来进行mock管理,不需要手动stop |
Closed
Merged
感谢大佬的调教 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
最近学习了TDD, 学会了一些简单的单元测试方法, 跟大家分享一下, 希望大家看完了, 就可以在项目里加几个单元测试, 提高一下项目的覆盖率
单元测试的核心是比起集成测试, 更加关注过程, 而不是关注结果. 而且因为是"单元"测试, 单个的单元测试只关注一个方法甚至一个方法的一部分, 这些测试全部通过了, 整个系统也就通过了
为了达到"单元"这个效果, 写一个方法的单元测试, 我们要做的事情就是如下几步, 这里我拿一个简单的例子做讲解
Python中模拟方法用到的是mock 模块, 里面有patch作为decorator
https://docs.python.org/3.6/library/unittest.mock.html
那么我们的测试脚本可以这么写
这样一个简单的单元测试就完成了, 如我所说, patch所有的调用, 只关注于方法内部. 验证方法内部的数据处理, 以及if for之类的判断是否正常
patch还有别的用法, 大家可以参考文档, 这里我再补充一下patch的一个要注意的点
在patch多个方法的时候, 要注意测试函数的参数, 第一个参数是倒数第一个被patch 的方法, 第二个参数是倒数第二个被patch的方法, 这是由于装饰器的机制造成的, 只要在平时的时候多加注意就可以了
另外在
patch
对象方法的时候, 要注意要这么写目前测试都在各个文件夹下的tests.py 里, 大家可以参考之前有过的测试, 并且记得一定要看
Python
和Django
的文档.对于django的测试也可以使用Client 进行模拟访问, 这一部分可以参考我们的 注册测试
今天就写到这里, 大家单元测试写起来, 有什么疑问的可以发在这里, 希望我的文字可以给大家一些启发
The text was updated successfully, but these errors were encountered: