转载:http://www.wtoutiao.com/p/ydeoyY.html

在unittest的模块中,提供了TestRunner类来进行运行测试用例,在实际的应用中,经常使用的是TextTestRunner类,执行后,会已文字的形式打印出测试结果,见如下的测试执行的代码:

#coding:utf-8

from seleniumimport webdriver

import unittest

classbaiduTest(unittest.TestCase):

def setUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.get('http://www.baidu.com')

def testBaiduTitle(self):

self.assertIn(u'百度一下,你就知道',self.driver.title)

def testBaiduTitle2(self):

self.assertNotEqual(u'bing下,你就知道',self.driver.title)

def tearDown(self):

self.driver.close()

if__name__=='__main__':

suite=unittest.TestSuite()

suite.addTest(baiduTest('testBaiduTitle'))

suite.addTest(baiduTest('testBaiduTitle2'))

#执行用例

runner=unittest.TextTestRunner()

runner.run(suite)

执行后,生成如下的测试结果,见截图:


一、unittest.skip()

unittest.skip('注释')是忽略此测试,但是得写忽略该case的原因,如在一个自动化的测试模块中,由于某些功能取消,那么对应的case也就不再执行,可以添加unittest.skip("忽略该测试用例"),见下面的代码示例,忽略了测试百度url的测试用例,见测试代码:

#coding:utf-8

from seleniumimport webdriver

importunittest,sys,time

reload(sys)

sys.setdefaultencoding('utf-8')

classBaiduTest(unittest.TestCase):

def setUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.get('http://www.baidu.com')

self.driver.implicitly_wait(30)

def testTitle(self):

self.assertEqual(u'百度一下,你就知道',self.driver.title)

@unittest.skip('Ignore this test case')

def testUrl(self):

self.assertEqual('https://www.baidu.com/',self.driver.current_url)

def tearDown(self):

self.driver.quit()

@staticmethod

def suite():

suite=unittest.TestSuite(unittest.makeSuite(BaiduTest))

return suite

if__name__=='__main__':

unittest.TextTestRunner(verbosity=2).run(BaiduTest.suite())

见执行后的结果,跳过了testUrl测试用例的执行,见截图:

二、unittest.expectedFailure

unittest.expectedFailure指的是期望失败,见下面的测试代码。期望testUrl测试用例执行失败:

#coding:utf-8

from seleniumimport webdriver

importunittest,sys,time

reload(sys)

sys.setdefaultencoding('utf-8')

classBaiduTest(unittest.TestCase):

def setUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.get('http://www.baidu.com')

self.driver.implicitly_wait(30)

def testTitle(self):

self.assertEqual(u'百度一下,你就知道',self.driver.title)

@unittest.expectedFailure

def testUrl(self):

self.assertEqual('http://www.baidu',self.driver.current_url)

def tearDown(self):

self.driver.quit()

@staticmethod

def suite():

suite=unittest.TestSuite(unittest.makeSuite(BaiduTest))

return suite

if__name__=='__main__':

unittest.TextTestRunner(verbosity=2).run(BaiduTest.suite())

见执行后的测试结果,会显示出来期望的结果是成功还是失败,见截图:

(引用) unittest测试驱动之执行测试(三)的更多相关文章

  1. jmeter接口自动化-通过csv文件读取用例并执行测试

    最近在公司测试中经常使用jmeter这个工具进行接口自动化,简单记录下~ 一.在csv文件中编写好用例 首先在csv文件首行填写相关参数(可根据具体情况而定)并编写测试用例.脚本可通过优先级参数控制执 ...

  2. Java+Selenium 3.x 实现Web自动化 - Maven打包TestNG,利用jenkins执行测试

    1. Jenkins本地执行测试 or 服务器端执行测试 测试代码计划通过jenkins执行时,通过网上查询各种教程,大多数为本地执行测试,由此可见,本地执行是大多数人的选择. 经过探讨,最终决定采用 ...

  3. LTP--linux稳定性测试 linux性能测试 ltp压力测试 内核更新 稳定性测试

    LTP--linux稳定性测试 linux性能测试 ltp压力测试 zhangzj1030关注14人评论33721人阅读2011-12-09 12:07:45   说明:在写这篇文章之前,本人也不曾了 ...

  4. unittest对单个测试类的多种测试执行方法总结

    基于unittest测试框架编写的测试脚本,一般单个测试类下会有多个测试方法,unittest也提供多种测试执行方式,下面就不同方式或者需求一一实操并说明: 一.使用unittest下main()方法 ...

  5. python调用HTMLTestRunner+unittest实现一次执行多个测试类,并生成与每个测试类对应的测试报告,具体看代码,附上整个project代码

    python自动化框架雏形,根据自己需要封装:ui自动化,接口自动化均可适用,python版本为python3.x,不要问我为什么不用python2.x,附上整个project代码:http://fi ...

  6. {MySQL的逻辑查询语句的执行顺序}一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析

    MySQL的逻辑查询语句的执行顺序 阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SEL ...

  7. unittest 执行测试脚本输出测试报告

    import unittestimport HTMLTestRunnertest as HTMLTestRunner#获取路径path = './'#创建测试套件,读取测试脚本suite = unit ...

  8. python+selenium自动化软件测试(第10章):测试驱动TDD

    测试驱动开发模式,要求开发在写业务代码的时候,先写出测试代码,同时单元测试例子决定了如何来写产品的代码,并且不断的成功的执行编写的所有的单元测试例子,不断的完善单元测试例子进而完善产品代码, 这样随着 ...

  9. python实例编写(6)--引入unittest测试框架,构造测试集批量测试(以微信统一管理平台为例)

    ---恢复内容开始--- 一.python单元测试实例介绍 unittest框架又叫PyUnit框架,是python的单元测试框架. 先介绍一个普通的单元测试(不用unittest框架)的实例: 首先 ...

随机推荐

  1. 修改使用phpstorm创建的模板的默认注释

     

  2. Java 使用Redis缓存工具的图文详细方法

    开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java. (1)Java的安装配置可以参考我们的 Java ...

  3. SpringMVC学习系列(5) 之 数据绑定-2

    在系列(4)中我们介绍了如何用@RequestParam来绑定数据,下面我们来看一下其它几个数据绑定注解的使用方法. 1.@PathVariable 用来绑定URL模板变量值,这个我们已经在系列(3) ...

  4. [Tex学习笔记]开方

    $$\sqrt[n]{\frac{a}{b}}$$ $$\sqrt[\uproot{7}n]{\frac{a}{b}}$$

  5. Angular(2)

    1.自定义指令,直接栗子: note:定义指定是驼峰,2部分 前缀+作用,but  调用 改驼峰首字母大写处为 (-首字母小写) <!DOCTYPE html><html lang= ...

  6. ThinkPHP的路由形式

    首先解释一下,这里路由的意思是:系统从URL参数中分析出当前请求的分组.控制器.操作 .另外我的网址根目录是放在article目录下的,Thinkphp主要有下面几种路由形式 1.pathinfo路径 ...

  7. IEEE浮点数表示法之出小数

    纯小数的表示方法-------------------------------------------------    下面再来讲如何将纯小数转化为十六进制.对于纯小数,比如0.0456,我们需要把 ...

  8. node js 调试

    npm install -g node-inspector node --debug app.js >重新打开一个窗口   node-inspector &   KO!       no ...

  9. Qlikview List控件

    将纵向展示变为横向展示 方法: ListBox属性分页,“外观”分页“单列”属性不要打钩,用鼠标调整控件高度,Listbox控件会自适应现实将数据打横现实.

  10. 使用Supervisor管理Celery进程。

    讲过一篇celery的,但是celery启动后并不是daemon的,在生产环境中这肯定是不可以的,那怎么办呢? 这就需要使用supervisor进行进程管理了,下面详细介绍. 一. superviso ...