3. 单元测试框架(unittest)1——TestCase
2024-10-08 00:10:13
1. import unittest
引入unittest模块;
2. class SearchTest (unittest.TestCase):
定义一个继承于TestCase类的子类;
3. def setUp(self):
测试执行器在每次执行测试方法之前优先执行该方法(这样做有助于确保每个测试方法都能够依赖相同的环境);
此方法没有参数,而且不返回任何值;
4. def test_search_by_category(self):
test()方法也是在TestCase类中实现,重要的一点是需要给测试方法命名为test开头;这种命名约定通知test runner哪个方法代表测试方法;
5. self.assertEqual(1,len(products))
调用assertEqual(预期值,实际值)来校验预期结果;
验证用程序搜索该术语返回的结果是否和预期结果相匹配;
6. def tearDown(self):
TestCase类会在测试执行完成之后调用tearDown()方法来清理所有的初始化值;
一旦测试被执行,在setUp()方法中定义的值将不再需要,所以最好的做法是在测试执行完成的时候清理掉由setUp()方法初始化的数值;
7.
if __name__ == '__main__':
unittest.main(verbosity=2)
为了通过命令行的运行测试,我们可以在测试用例中添加对main方法的调用。
将传递verbosity参数以便使详细的测试总量展示在控制台:
verbosity是一个选项,表示测试结果的信息复杂度,有三个值
0 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共100个 失败20 成功80
1 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F”
2 (详细模式):测试结果会显示每个测试用例的所有相关的信息
并且 你在命令行里加入不同的参数可以起到一样的效果
加入 --quiet 参数 等效于 verbosity=0
加入--verbose参数等效于 verbosity=2
什么都不加就是 verbosity=1
8. 改初始化和结束初始化的方法级别的方法为类级别的方法,类级别的方法,无论类中有多少个用例,都只会共用一个浏览器;
@classmethod
def setUpClass(cls):
@classmethod
def tearDownClass(cls):
9. 方法中的self指向类的实例,有点this的意思,不加self的变量是本地变量,加了就是实例变量;
10. 测试用例执行顺序解决办法:
1. 测试套件
testcase = unittest.TestLoader().loadTestsfromTestCase(测试类)
suites = unittest.TestSuite()
suites.addTest(class('testcase')
2. TestCase的名称:按照1-9,A-Z,a-z
3. 补充unittest的框架:如链接楼主的utx;
最新文章
- Java基础学习总结--对象容器
- MySQL 编程的6个重要的技巧
- Robotium ant 报错Unable to find instrumentation info for: ComponentInfo{project/android.test.InstrumentationTestRunner}
- Java 基础知识总结 (四、String)
- Interlocked.CompareExchange
- Json-lib使用 转载
- [Webpack 2] Add Code Coverage to tests in a Webpack project
- 用crontab、crond在嵌入式系统中添加定时任务
- HTML 5 Audio/Video DOM buffered 属性
- 论文摘抄 - FlumeJava
- sql点滴42—mysql中的数据结构
- 把嵌入在eclipse中的tomcat日志分离出来
- RabbitMQ知多少
- ord在python是什么意思?
- JavaOOP笔记
- WebRtc编译好的vs2015源码
- error LNK2001: 无法解析的外部符号 _H5T_NATIVE_DOUBLE_g
- bzoj 4451 : [Cerc2015]Frightful Formula FFT
- Java_正则表达式&;时间日期
- jquery设置按钮disabled