unittest 介绍了4 个重要的概念: test case, test suite, test runner,test fixture。
1、testcase: 一个TestCase 的实例就是一个测试用例, 就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),实现测试过程的代码(run),以及测试后环境的还原(tearDown)。元测试(unittest)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个功能进行验证。
setUp 用于设置初始化工作,在每一个测试用例前先被执行,它与tearDown方法相呼应,后者在每一个测试用例执行后被执行。这里的初始化工作定义了浏览器启动和基础URL 地址。
def setUp(self): self.driver = webdriver.Chrome() self.driver.implicitly_wait(30) self.base_url = "https://172.1.1.1/" self.verificationErrors = [] self.accept_next_alert = True
tearDown 方法在每个测试方法执行后调用,这个方法用于完成测试用例执行后的清理工作,如退出浏览器、关闭驱动,恢复用例执行状态等。在setUp()方法中定义了verificationErrors 为空数组,这里通过assertEqual()比较其是否为空,如果为空说明用例执行的过程过程中没有出现异常,否则将抛出AssertionError 异常:
def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors)
2、testsuite: 对一个功能的验证往往是需要多测试用例的,可以把多的测试用例集合在一起执行,这就产生了测试套件TestSuite 的概念,它用来组装单个测试用例,而且TestSuite 也可以嵌套TestSuite。
testSuite()可以被看作一个容器(测试套件),通过addTest 方法我们可罗列具体所要执行的测试用例。如果使用unittest.main() 的话默认会执行所有以test 开头的测试用例。
3、testrunner: TextTestRunner 是来执行测试用例的,其中的run(test)用来执行TestSuite/TestCase。测试的结果会保存到TextTestResult 实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。
4、testfixture: 对一个测试用例环境的搭建和销毁,是一个fixture,通过覆盖TestCase 的setUp()和tearDown()方法来实现.