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

一、使用unittest下main()方法的运行所有测试方法,实例代码如下:

'''单个测试类的多种运行方式'''
# -*- coding:utf-8 -*-
import unittest
from selenium import webdriver
from time import sleep
import HTMLTestRunner class BaiduSearch(unittest.TestCase):
@classmethod
def setUpClass(cls):
#create a new browser session
cls.driver = webdriver.Chrome()
cls.driver.implicitly_wait(30)
cls.driver.maximize_window() cls.driver.get("https://www.baidu.com") def test_search_selenium(self):
#get the search textbox and enter search keyword
search_textbox = self.driver.find_element_by_id('kw')
search_textbox.clear()
search_textbox.send_keys("selenium")
#get the and seacrh button and click
seacrh_button = self.driver.find_element_by_id('su')
seacrh_button.click() #add assert
sleep(2)
tag = self.driver.find_element_by_link_text("Selenium Remote Control").text
self.assertIn("Selenium",tag) def test_search_python(self):
search_textbox = self.driver.find_element_by_id('kw')
search_textbox.clear()
search_textbox.send_keys("python")
seacrh_button = self.driver.find_element_by_id('su')
seacrh_button.click() sleep(3)
tag = self.driver.find_element_by_link_text("PyPI").text
self.assertEqual("PyPI",tag) @classmethod
def tearDownClass(cls):
#close the browser window
cls.driver.quit() #使用unittest下main()方法的运行所有测试方法
if __name__ == '__main__':
unittest.main(verbosity=2) #传递verbosity参数查看更详细的测试结果展示

  运行结果如下 :

  

二、使用TestLoader和TextTestRunner来创建和运行测试套件,代码如下:

...
suite = unittest.TestLoader().loadTestsFromTestCase(BaiduSearch)
unittest.TextTestRunner(verbosity=2).run(suite)

  运行结果同上。

三、使用TestSuite和TextTestRunner来创建和运行测试套件,代码如下:

...
suite = unittest.TestSuite()
suite.addTest(BaiduSearch("test_search_python")) #使用addTest()添加测试类下面的单个测试方法
suite.addTest(BaiduSearch("test_search_selenium"))
unittest.TextTestRunner(verbosity=2).run(suite)

  运行结果同上。

  注意这个方法可以灵活只运行测试类下的任何一个或者几个测试方法,只需要addTest相应测试方法即可,或者在添加完所有方法后注释掉其中不打算测试的方法也可以。

四、使用HTMLTestRunner和TestLoader来创建和运行测试套件并生成漂亮的HTML格式的测试报告,代码如下:

...
suite = unittest.TestLoader().loadTestsFromTestCase(BaiduSearch)
#open the report file
report_file = open('./' + ' BaiduSearch_test.html', 'wb')
#configure HTMLTestRunner options and run the suite
HTMLTestRunner.HTMLTestRunner(stream = report_file,
title = "baidu",
description = "Baidu Test",
verbosity=2).run(suite)

  运行结果同上且生成一个HTML格式的测试报告在当前目录下。

  

unittest对单个测试类的多种测试执行方法总结的更多相关文章

  1. 编写测试类,了解ArrayList的方法

    这篇文章主要介绍了C#中动态数组用法,实例分析了C#中ArrayList实现动态数组的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了C#中动态数组用法.分享给大家供大家参考.具体分析如下 ...

  2. 创建一个抽象的员工类, 抽象开发累继承员工类,JavaEE ,和安卓继承开发类在测试类中进行测试

    /* 1 定义一个员工类  所有的子类都抽取(抽象类)  Employee            属性:姓名  工号(生成get  set  )       方法:工作  抽象     2 定义一个研 ...

  3. JUnit操作指南-批量执行单元测试(将多个测试类捆绑在一起执行)

    相关链接:https://github.com/junit-team/junit4/wiki/Aggregating-tests-in-suites

  4. python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装

    前言 在python+pytest 接口自动化系列中,我们之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行. 例如单个接口的请求代码 ...

  5. python+unittest框架第二天unittest之简单认识Test Suite:测试套件

    今天了解下测试套件Test Suite,什么是测试套件,测试套件是由多个Test Case测试用例组成的,当然也可以由多个子测试套件组成. 接下来看下如果构建测试套件,构建测试套件的方法: 1.用un ...

  6. TestNG之执行测试类方式

    TestNG提供了很多执行方式,下面做简单介绍. 1.XML指明测试类,按照类名执行,其中可以指定包名,也可指定无包名: 带包名,运行ParameterSample类和ParameterTest类 & ...

  7. XCode中的单元测试:编写测试类和方法(内容意译自苹果官方文档)

    当你在工程中通过测试导航栏添加了一个测试target之后, xcode会在测试导航栏中显示该target所属的测试类和方法. 这一章演示了怎么创建测试类,以及如何编写测试方法. 测试targets, ...

  8. Spring4.2.3+Hibernate4.3.11整合( IntelliJ maven项目)(使用Annotation注解)(Junit测试类)

    1. 在IntelliJ中新建maven项目 给出一个建好的示例 2. 在pom.xml中配置依赖 包括: spring-context spring-orm hibernate-core mysql ...

  9. Salesforce 开发整理(一)测试类最佳实践

    在Sales force开发中完善测试类是开发者必经的一个环节,代码的部署需要保证至少75%的覆盖率,那么该如何写好测试类呢. 测试类定义格式如下: @isTest private class MyT ...

随机推荐

  1. python学习笔记(十三): 多线程多进程

    一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...

  2. 【转】C#事件、委托、回调的用法与区别

    原文地址:http://blog.csdn.net/huang9012/article/details/38753305 事件包括:事件发送者.事件接收者和事件处理程序.关于事件,我们首要知道的是事件 ...

  3. Tkinter Message

    Python GUI - Tkinter Message(消息):这个小工具提供了一个多和不可编辑的对象,显示文本,自动断行和其内容的理由.   这个小工具提供了一个多和不可编辑的对象,显示文本,自动 ...

  4. ubuntu时区设置

    local-gen zh_CN.UTF-8 UTF-8 /var/lib/locales/supported.d/local可以看到如下内容: zh_CN.UTF-8 UTF-8 en_US.UTF- ...

  5. 第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法

    是时候开始写个前端了,Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jinja2 捎带手把 render_template 中留下的疑问解决一下 首先我们要在后端定义几个字符 ...

  6. linux shell find

     find /  -ctime +365 ! -name "*.bat" -exce rm -rf {} \;

  7. vs2012 未找到与约束 ContractName Microsoft.VisualStudio.Utilities.IContentTy...

    错误的大致内容,不能加载某个文件,需要修改web.config文件或者重命名新建.... 周末360大神帮我修复了一下电脑,然而,这一修复导致周一早上的一连串状况, 以上就是错误本尊,刚开始以为同事提 ...

  8. 在Ajax请求中什么时候用GET方式什么时候用POST方式?

    当我们有大量数据要传送时最好的办法是一次发出多个只传递少量信息的Ajax调用时.如果你正用一个Ajax调用发送大量数据,那么最好是结束这种做法,因为这样做并不能节约时间. 因此,需要传送大量数据能成为 ...

  9. Vertex Lit

    [Vertex Lit] Vertex Lit path generally renders each object in one pass, with lighting from all light ...

  10. Unity3D UI史

    http://www.cnblogs.com/hammerc/p/4837204.html 扫码时备注或说明中留下邮箱付款后如未回复请至https://shop135452397.taobao.com ...