Python系列之初识unittest

unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。有关python和unittest的基础知识部分就不细说了,大家可自行百度进行深入了解哦,以下是整个unittest四个比较重要的概念。

test fixture

test case

test suite

test runner

test fixture:简单来说就是做一些测试过程中需要准备的东西,比如创建临时的数据库、文件和目录等,其中 setUp() 和 setDown() 是最常用的方法。
test case:用户自定义的测试case的基类,调用run()方法,会依次调用setUP方法、执行用例的方法、tearDown()方法。
test suite:测试用例集合,可以通过addTest()方法手动增加Test Case,也可通过TestLoader自动添加Test Case,TestLoader在添加用例时,会没有顺序。
test runner:运行测试用例的驱动类,可以执行TestCase,也可执行TestSuite。执行后TestCase和Testsuite会自动管理TestResult。

下面贴上简单unittest的示例代码:

import unittest
import HTMLTestRunner
import time
class TestCases(unittest.TestCase):
    def setUp(self):
        print("每一条case执行之前都会执行这个方法")
    def tearDown(self):
        print("每一条case执行之后都会执行这个方法\n")
    def test_testcase1(self):
        print("这是一条测试用例case1")
        a = "hello"
        try:
            self.assertTrue(a.isalpha())
            print("测试通过")
        except Exception as e:
            print("出错啦,错误结果是%s" % e)
            print("failed")
            raise e
    def test_testcase2(self):
        print("这是一条测试用例case2")
        b = "123"
        try:
            self.assertTrue(b.isalpha())
            print("测试通过")
        except Exception as e:
            print("出错啦,错误结果是%s" % e)
            print("failed")
            raise e
    def test_testcase3(self):
        print("这是一条测试用例case3")
        c = " "
        try:
            self.assertTrue(c.isalpha())
            print("测试通过")
        except Exception as e:
            print("出错啦,错误结果是%s" % e)
            print("failed")
            raise e
‘‘‘
if __name__ == "__main__":
    unittest.main()
    写上这段代码可以在命令行直接运行model.py,而且用例全部执行
‘‘‘
"""
加载测试用例,方法不仅这种,还有利用loader的方法
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(TestCases))
or
suite.addTest(loader.loadTestsFromModule(model))
"""
suite = unittest.TestSuite()
# suite.addTest("test_testcase2")   # 这里我写错了,要加上模块
suite.addTest(TestCases(‘test_testcase3‘))
"""
指定测试报告的路径并且定义报告名称格式
"""
report_dir = "../Test report"
now = time.strftime("%Y-%m-%d %H-%M-%S")
reportname = report_dir + "/" + now + " Test report.html"
"""
运行用例并生成测试报告
"""
with open(reportname, "wb+") as file:
    runner = HTMLTestRunner.HTMLTestRunner(file, 2, title="Model test report",
                                           description="Hello testers! This is the description of Model test"
                                                       "report")
    runner.run(suite)

unittest模块小结:

关于这个模块,以前自己学习这个模块的时候,就不是很懂,这两天总算是略有收获。我在做示例时候有了新的发现:不能把断言放到try语句中并且是可以被except的异常类包含的,否则就不能通过断言来设置测试用例的结果。

睿江云官网链接:http://www.eflycloud.com/#register?salesID=6DGNUTUAV

原文地址:https://blog.51cto.com/13475644/2429070

时间: 2024-11-05 09:39:44

Python系列之初识unittest的相关文章

Python系列教程大汇总

Python初级教程 Python快速教程 (手册) Python基础01 Hello World! Python基础02 基本数据类型 Python基础03 序列 Python基础04 运算 Python基础05 缩进和选择 Python基础06 循环 Python基础07 函数 Python基础08 面向对象的基本概念 Python基础09 面向对象的进一步拓展 Python基础10 反过头来看看 Python补充01 序列的方法 Python中级教程 Python进阶01 词典 Pytho

Python系列之 __new__ 与 __init__

很喜欢Python这门语言.在看过语法后学习了Django 这个 Web 开发框架.算是对 Python 有些熟悉了.不过对里面很多东西还是不知道,因为用的少.今天学习了两个魔术方法:__new__ 和 __init__. 开攻: 如果对 Python 有所简单了解的话应该知道它包含类这个概念的.语法如下: class ClassName: <statement - 1>: . . . <statement - N> 问题来了.像我们学习的 C# 或是 Java 这些语言中,声明类

【python系列】SyntaxError:Missing parentheses in call to &#39;print&#39;

打印python2和python3的区别 如上图所示,我的 PyCharm安装的是python3.6如果使用print 10会出现语法错误,这是python2.x和python3.x的区别所导致的. [python系列]SyntaxError:Missing parentheses in call to 'print'

初探接口测试框架--python系列7

点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期待的方向,有更多兴趣的欢迎切磋,我们微信订阅号,联系方式如下: 更多书籍,敬请期待 背景说明 python系列课程也有段时间了,我们坚持,一步步来,今天是最后一课的分享,看看接口测试框架的神秘,小怪带领着大家一起完成第7课,希望能看完知识点,自己动手练习,然后和给出的例子代码对比,最后看看作业

总结整理 -- python系列

python系列 python--基础学习(一)开发环境搭建,体验HelloWorld python--基础学习(二)判断 .循环.定义函数.继承.调用 python--基础学习(三)字符串单引号.双引号.三引号 python--基础学习(四)自然字符串.重复字符串.子字符串 python--基础学习(五)参数位置传递.关键字传递.包裹传递及解包裹 python--基础学习(六)sqlite数据库基本操作 python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨 python--

Python系列英文原版电子书

[专题推荐]Python系列英文原版电子书 http://down.51cto.com/zt/104 python简明教程(CHM) http://down.51cto.com/data/49213 Linux黑客的python编程之道[pdf]推荐 http://down.51cto.com/data/417453 python编程实例 http://down.51cto.com/data/132975 python标准库中文版PDF(带章节书签) http://down.51cto.com/

iOS流布局UICollectionView系列一——初识与简单使用UICollectionView

iOS流布局UICollectionView系列一--初识与简单使用UICollectionView 一.简介 UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其中许多代理方法都十分类似.简单来说,UICollectionView是比UITbleView更加强大的一个UI控件,有如下几个方面: 1.支持水平和垂直两种方向的布局 2.通过layout配置方式进行布局 3.类似于TableView中的cell特性外,Collecti

SpringMVC 框架系列之初识与入门实例

SpringMVC 框架系列之初识与入门实例 1.SpringMVC 概述 (1).什么是 MVC:Model-View-Control Control 层属于框架性质,完成的主要工作是:封装 web 请求为一个数据对象.调用业务逻辑层来处理数据对象.返回处理数据结果及相应的视图给客户端. (2).什么是 SpringMVC Spring mvc 和 Struts2 都属于表现层的框架,是 Spring 框架的一部分,Spring 框架的 Control 层的核心是 DispatcherServ

Selenium2+python自动化20-引入unittest框架

Selenium2+python自动化20-引入unittest框架 from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom selenium.common.exceptions import NoSuchEl