(1)seleniumIDE介绍
Selenium IDE安装
Selenium IDE界面介绍
创建测试用例
Selenium IDE命令
断言与验证
(2)引入unittest框架
提供用例组织与执行:当你的测试用例只有几条时,可以不必考虑用例的组织,但是,当测试用例达到成百上千条时,大量的测试用例堆砌在一起,就产生了扩展性与维护性等问题,此时需要考虑用例的规范与组织问题了。单元测试框架就是用来解决这个问题的。
提供丰富的比较方法:不论是功能测试,还是单元测试,在用例执行完成之后都需要将实际结果与预期结果进行比较(断言),从而断定用例是否执行通过。单元测试框架一般会提供丰富的断言方法。例如,判断相等/不等、包含/不包含、True/False 的断言方法等。
提供丰富的日志:当测试用例执行失败时能抛出清晰的失败原因,当所有用例执行完成后能提供丰富的执行结果。例如,总执行时间、失败用例数、成功用例数等。
(3)unittest框架解析
提供丰富的日志:当测试用例执行失败时能抛出清晰的失败原因,当所有用例执行完成后能提供丰富的执行结果。例如,总执行时间、失败用例数、成功用例数等。
初识unittest:创建一个被测试类 calculator.py
不使用单元测试框架
使用unittest单元测试框架
(4)unittest框架介绍--重要概念
1、TestCase
一个 TestCase 的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp)、实现测试过程的代码(run),以及测试后环境的还原(tearDown)。单元测试(unit test)的本质也就在这里,一个测试用例就是一个完整的测试单元,通过运行这个测试单元,可以对某一个功能进行验证。
2、TestSuite 测试套
一个功能的验证往往需要多个测试用例,可以把多个测试用例集合在一起来执行,这就产生了测试套件 TestSuite 的概念。Test Suite 用来组装单个测试用例。可以通过 addTest()加载 TestCase 到 TestSuite 中,从而返回一个 TestSuite 实例。
3、TestRunner
测试的执行也是单元测试中非常重要的一个概念,一般单元测试框架中都会提供丰富的执行策略和执行结果。在 unittest 单元测试框架中,通过TextTestRunner 类提供的 run()方法来执行 test suite/test case。testrunner 可以使用图形界面、文本界面,或返回一个特殊的值等方式来表示测试执行的结果。
4、TestFixture
对一个测试用例环境的搭建和销毁,就是一个 fixture,通过覆盖TestCase的 setUp()和tearDown()方法来实现。有什么用呢?比如说在这个测试用例中需要访问数据库,那么可以在 setUp()中通过建立数据库连接来进行初始化,在 tearDown()中清除数据库产生的数据,然后关闭连接等。
注意:tearDown 的过程很重要,要为下一个 test case 留下一个干净的环境。
unittest 框架 断言
在执行用例的过程中,最终用例是否执行通过,是通过判断测试得到的实际结果与预期结果是否相等决定的。unittest框架的 TestCase类提供下面这些方法用于测试结果的判断。
assertEqual( a,b,msg=none):断言a是否等于b
assertNotEqual( a,b,msg=none):断言a是否不等于b
assertTrue( expr,msg=none):断言expr为TRUE
assertFalse( expr,msg=none):断言expr为False
assertTeue( expr,msg=none):断言expr为TRUE
assertFalse( expr,msg=none):断言expr为False
assertIn(a,b, msg=None) :断言a在b中
assertNotIn(a,b,msg=none):断言a不在b中
assertIsNone(a, msg=None) :断言a为none
assertIsNotNone(a,b,msg=none):断言a不为none
assertIsInstance(a, b) :断言a为b的实例
assertNotIsInstance(a, b) :断言a不是b的实例
(4)组织测试用例
根据不同的功能创建不同的测试文件,甚至是不同的测试目录,测试文件中还可以将不同的小功能划分为不同的测试类,在类下编写测试用例,整体结构更加清晰。