1.简介

unittest是python内置的单元测试框架,具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件。使用unittest前需要了解该框架的五个概念:

即test case,test suite,testLoader,test runner,test fixture。

test case  :一个完整的测试单元,执行该测试单元可以完成对某一个问题的验证,完整体现在:测试前环境准备(setUp),执行测试代码(run),及测试后环境还原(tearDown);

test suite  :多个测试用例的集合,测试套件或测试计划;

testLoader  :加载TestCase到TestSuite中的,其中loadTestsFrom__()方法用于寻找TestCase,并创建它们的实例,然后添加到TestSuite中,返回TestSuite实例;

test runner :执行测试用例,并将测试结果保存到TextTestResult实例中,包括运行了多少测试用例, 成功了多少,失败了多少等信息;

test fixture:一个测试用例的初始化准备及环境还原,主要是setUp() 和 setDown()方法;
————————————————

2.原理

通过unittest类调用分析,框架的工作流程:

编写TestCase,由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,最后将运行的结果保存在TextTestResult

————————————————

3.unittest使用方法

 1.导入unittest包

 import unittest

2.编写测试类继承unittest.TestCase父类
class YunLoginTest(unittest.TestCase):
3.编写测试用例
    
import unittest,parameterized
def my_sum(a,b):
a += 1
b += 3
return a+b
# 生成测试用例
class TestSum(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("先执行类")
def setUp(self):
print("使用前执行")
def test_01(self):
print(my_sum(3,2))

def test_02(self):
print(my_sum(1,6))

def test_03(self):
print(my_sum(4,-3))

def test_04(self):
print(my_sum(0,3))
def tearDown(self):
print("方法结束后")
@classmethod
def tearDownClass(cls):
print("结束类用例")

class TestSum1(unittest.TestCase):
def test_01(self):
number = my_sum(3,4)
self.assertEqual(number,11)

def test_02(self):
number = my_sum(1, -3)
self.assertEqual(number, 2)

def test_03(self):
number = my_sum(3, 4)
self.assertIn(number, [5,6,7,8,9,10,11])

def test_04(self):
number = my_sum(7, 4)
self.assertIn(number, [1, 6, 7, 8, 9, 10])

# def setUpModule():
# print("11111")
#
# def tearDownModule():
# print('9999')
--------
# 另一种方法
# 调用时用类调用
class TestSum2(unittest.TestCase):
@parameterized.parameterized.expand([(1,5,10),(-1,8,11),(-2,-7,-5)])
def test_01(self,x,y,z):
number = my_sum(x,y)
self.assertEqual(number,z)

4.运行unittest测试框架
  
# 将测试用例添加到套件里面
suite = unittest.TestSuite()
suite.addTest(TestSum1("test_01"))
suite.addTest(TestSum1("test_02"))
suite.addTest(TestSum1("test_03"))
suite.addTest(TestSum1("test_04"))

# suite = unittest.TestSuite()
# suite.addTest(TestSum("test_01"))
# suite.addTest(TestSum("test_02"))
# suite.addTest(TestSum("test_03"))
# suite.addTest(TestSum("test_04"))

suite = unittest.TestSuite()
suite.addTest(TestSum1("test_01"))

# 一次性添加一个类里面的所有用例
# suite.addTest(unittest.makeSuite(TestSum2))

# 批量添加一个py文件里所有的用例
# suite = unittest.TestLoader().discover('./','test1.py')
#
# 执行suite对象中的用例
# runner = unittest.TextTestRunner()
# runner.run(suite)
#
# if __name__ == '__main__':
# TestSum()

4.unnittest常用断言

 5.配合HTMLTestRunner生成测试报告

# 将测试用例添加到套件里面
suite = unittest.TestSuite()
suite.addTest(TestSum1("test_01"))
suite.addTest(TestSum1("test_02"))
suite.addTest(TestSum1("test_03"))
suite.addTest(TestSum1("test_04"))
# 生成测试报告
f = open("test.html", 'wb')
runner = HTMLTestRunner(stream=f, title="自动化测试",
description="Chrome 浏览器")
runner.run(suite)

f.close()

unittest框架基本使用的更多相关文章

  1. selenium-webdriver(python) (十六) --unittest 框架

    学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本.相信不少新手学习selenium 也是从IED 开始的. IDE学习参考: 菜鸟学自动化测试(一)----selen ...

  2. Selenium2+python自动化30-引入unittest框架

    from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.com ...

  3. unittest 框架

    unittest 框架 学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本.相信不少新手学习selenium 也是从IED 开始的. IDE学习参考: 菜鸟学自动化测试 ...

  4. unittest框架概要

    unittest是Python语言自带的单元测试框架,原名PyUnit. 认识unittest 在unittest框架中有4个重要概念:test fixture.test case.test suit ...

  5. 接口登录CSDN发布博客---封装方法,使用unittest框架

    一个简单的跑接口流程:登录后发表带图片的博客.这里涉及到的知识点: 1.登录时通过cookies去保持登录状态,把cookies添加到一个session中,这样可以保持长时间登录状态: 2.我们通过爬 ...

  6. 记录python接口自动化测试--unittest框架基本应用(第二目)

    在第一目里写了几个简单demo,并把调用get和post请求的方法封装到了一个类里,这次结合python自带的unittest框架,用之前封装的方法来写一个接口测试demo 1.unittest简单用 ...

  7. Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins

    本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考 整体思路: 1.接口自动化用的是Python中unittest框架 2.所有的测试数据用例存 ...

  8. unittest框架(惨不忍睹低配版)

    根据我上个随笔的unittest框架优化得来,虽然对于smtp模块还是有点迷糊,不过还是勉强搭建运行成功了,还是先上代码: #login_test.py import requests class L ...

  9. Unittest框架小结

    在日常的自动化测试过程中,Python里有一个自带的单元测试框架是unittest模块,简单易用,这里简单介绍下其主要的用法. Unittest测试框架主要包含四个部分 TestCase 也就是测试用 ...

  10. python学习笔记之——unittest框架

    unittest是python自带的单元测试框架,尽管其主要是为单元测试服务的,但我们也可以用它来做UI自动化测试和接口的自动化测试. unittest框架为我们编写用例提供了如下的能力 定义用例的能 ...

随机推荐

  1. 转载安卓或苹果手机获取URL scheme方法

    首先,打开支付宝,来到需要抓取的小程序页面.此处以上海的随申码为例演示,打开随申办小程序,点击顶部的「随申码」按钮进入页面. 可以看出这个一个二级页面,如果想要使用 URL Scheme 一键访问,同 ...

  2. Eclipse创建maven-web项目时找不到archetype解决方法

    转:https://blog.csdn.net/sunjinjuan/article/details/82943488

  3. C++ primer笔记 -数组和指针

    如果数组没有显示的提供元素的初始值,则数组元素会像普通变量一样的初始化: 1.在函数体外的内置类型的数组,其元素均初始化为0 2.在函数体内的内置类型的数组,其元素无初始化 3.如果为类类型,则不管位 ...

  4. 从create-react-app 学点东西1:web-vitals

    导言 市场中流行的框架有很多地方是值得我们深入的去探究或学习的,<从create-react-app学点东西>这系列文章从create-react-app创建的项目中找出一些重要或者容易忽 ...

  5. egg开发系列--模板语法

    在这里列一下 nunjucks 常用的模板内容 首先需要在plugin.js 当中引入 exports.nunjucks = { enable: true, package: 'egg-view-nu ...

  6. tomcat 3 - 默认连接器

    Tomcat 中使用的容器连接器必须满足以下要求: 实现 org.apache.catalina.Connector 接口 负责创建实现了 org.apache.catalina.Request 接口 ...

  7. Python中变量和对象的关系

    变量和对象 Python中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是对象.而变量是对象的一个引用(也可以称为标签或者名字),对象的操作都是通过引用来完成的. 例如,[]是一个空列 ...

  8. 8.golang语言学习,运算符介绍

    1.算术运算 自增,自减,只能单独使用,++,--只能写在变量后面 2.赋值运算符 优先级,单目运算,赋值运算从右到左运算,其余从左到右,无三目运算,用if实现 3.比较运算符/关系 4.逻辑运算符 ...

  9. Python_QT_量化投资/量化交易 基础入门课

    量化投资/量化交易 基础入门课 https://www.bilibili.com/video/BV1n4411q7ic?from=search&seid=1127232108574476398 ...

  10. react native 使用什么本地存储(asyncStorage 或者 H5的LocalStorage)

    1. 官方文档上面 已经废弃 ,官方建议@react-native-community/async-storage代替.我看了这个确实写起来很麻烦,果断不使用了 2. 之后我使用 react-nati ...