上篇说到确立了自己的python+selenium/Appium+单元测试框架作为自己目前的学习框架,作为上班族属于自己的时间极少,只能晚上下班回家或者周日抽出一点时间进行学习,苦逼啊,自学不易,凡是还是要在大学的时候就开搞,血的教训!!!
首先要学习一门编程语言,在这里选择了大火的python,通过菜鸟教程和相关的PDF文档终于熟悉了一些基本操作,例如字典、列表、循环、函数、类与对象、文件读写等。好了编程语言知识暂时告一段落,下面开始selenium的学习,在这里真的踩了不少坑,从配置环境到开始编程。这里要感谢虫师的selenium教程和白月黑羽的自学教程,selenium重点要学习如何安装环境和基本原理、选择元素、操控元素等。
学习到这里基本可以完成一些简单的自动化操作了,但是面对复杂的逻辑功能这些远远不够,这里就需要借助单元测试框架-.
unittest,unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the bar green,相信使用eclipse写过java单元测试的都心领神会。unittest实现了很多junit中的概念,比如我们非常熟悉的test case, test suite等,总之,原理都是相通的,只是用不同的语言表达出来。
- 一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。
- 而多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。
- TestLoader是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例。
- TextTestRunner是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。
- 测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。
这样整个流程就清楚了,首先是要写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,整个过程集成在unittest.main模块中。