赵走x博客
网站访问量:151513
首页
书籍
软件
工具
古诗词
搜索
登录
5、TestCase类
4、unittest单元测试框架
3、支持跨浏览器
2、 第一个Selenium Python脚本
1、基于Python的Selenium WebDriver入门
5、TestCase类
资源编号:75972
Selenium自动化测试:基于Python语言
书籍
热度:96
我们可以通过继承TestCase类并且在测试类中为每一个测试添加测试方法来创建单个测试或者一组测试。为了创建测试,我们需要使用TestCase类中的assert或者使用其中的一种assert方法。每个测试最重要的任务是调用assertEqual()来校验预期结果,调用assertTrue() 来验证条件,或者调用assertRaises() 来验证预期的异常。
我们可以通过继承TestCase类并且在测试类中为每一个测试添加测试方法来创建单个测试或者一组测试。为了创建测试,我们需要使用TestCase类中的assert或者使用其中的一种assert方法。每个测试最重要的任务是调用assertEqual()来校验预期结果,调用assertTrue() 来验证条件,或者调用assertRaises() 来验证预期的异常。 除了添加测试,我们可以添加测试夹具——setUp()方法和tearDown()方法,创建或处置测试用例所需要的任何对象和条件。 让我们开始使用unittest,首先通过继承TestCase类然后添加一个测试方法,来为第1章(基于Python的Selenium WebDriver入门)中的例子脚本写一个简单的测试。 我们需要先引入unittest模块,然后定义一个继承于TestCase 类的子类,具体如下: ``` import unittest class SearchTest(unittest.TestCase): ``` # 1、setUp()方法 一个测试用例是从setUp()方法开始执行的,我们可以用这个方法在每个测试开始前去执行一些初始化的任务。可以是这样的初始化准备:比如创建浏览器实例,访问URL,加载测试数据和打开日志文件等。 此方法没有参数,而且不返回任何值。当定义了一个setUp()方法,测试执行器在每次执行测试方法之前优先执行该方法。在下面的例子里,我们将用setUp()方法来创建Firefox的实例,设置properties,而且在测试开始执行之前访问到被测程序的主页。例子如下: ``` import unittest from selenium import webdriver class SearchTests(unittest.TestCase): def setUp(self): # create a new Firefox session self.driver=webdriver.Firefox() self.driver.implicitly_wait(30) self.driver.maximize_window() # navigate to the application home page self.driver.get('http://demo.magentocommerce.com/') ``` # 2、编写测试 有了setUp()方法,现在可以写一些测试用来验证我们想要测试的程序的功能。在这个例子里,我们将搜索一个产品,然后检查是否返回一些相应的结果。与setUp()方法相似,test方法也是在TestCase类中实现。重要的一点是我们需要给测试方法命名 为test开头。这种命名约定通知test runner哪个方法 代表测试方法。 对于test runner能找到的每个测试方法,都会在 执行测试方法之前先执行setUp()方法。这样做有助 于确保每个测试方法都能够依赖相同的环境,无论 类中有多少测试方法。我们将使用简单的 assertEqual()方法来验证用程序搜索该术语返回的结 果是否和预期结果相匹配。我们将在本章后面内容 探讨更多关于断言的内容。 添加一个新的测试方法 test_search_by_category(),通过分类来搜索产品, 然后校验返回的产品的数量是否正确,具体如下。 2.1.1.3 代码清理 类似于setUp()方法在每个测试方法之前被调 用,TestCase类也会在测试执行完成之后调用 tearDown()方法来清理所有的初始化值。一旦测试 被执行,在setUp()方法中定义的值将不再需要,所 以最好的做法是在测试执行完成的时候清理掉由 setUp()方法初始化的数值。在我们的例子里,在测 试执行完成后,就不再需要Firefox的实例。我们将 在tearDown()方法中关闭Firefox实例,如下代码所 示。 2.1.1.4 运行测试 为了通过命令行运行测试,我们可以在测试用 例中添加对main方法的调用。我们将传递verbosity 参数以便使详细的测试总量展示在控制台。 我们可以把测试脚本保存为普通的Python脚 本。在这个例子里,把测试保存为searchtests.py。 保存文件以后,我们可以通过下面的命令行来执行 该测试。 测试运行结束后,unittest会把测试结果和概要 展示在控制台,如下图所示。 除了测试结果概要外,当一个测试用例执行失 败,针对每个失败,测试结果概要都会通过生成文 本信息来展示具体哪里有错误。通过下面的截图, 可以看到当我们修改预期结果值后会发生些什么。 上图展示了具体是哪个测试方法执行失败,通 过打印信息可以追踪具体导致失败的代码。另外, 失败自身也会以AssertionError形式显示,例子中的 预期结果和实际结果并不匹配。 2.1.1.5 添加其他测试 我们可以用一组测试来构建一个测试类,这样 有助于为一个特定功能创建一组更合乎逻辑的测 试。下面为测试类添加其他的测试。规则很简单, 新的测试方法命名也要以test开头,如下列代码。 运行这个测试类将能看到两个Firefox的实例打 开和关闭,这正是setUp()方法和tearDown()方法针 对每个测试方法都要执行产生的结果,如下图所 示。