Python参数化和单元测试框架使用

  • 背景
  • 思路
  • 代码
  • 运行
    • 方法一
    • 方法二
  • 参考

背景

为了更好地管理自动化测试用例,同时对用例输入进行参数化,并且生成好看的测试报告,对题目中的几个框架进行了组合使用。

思路

  1. parameterized 参数化让单元测试更好管理用例输入变量
  2. unittest便于管理测试用例
  3. HTMLReport生成便于查看的HTML测试报告
  4. nose让用例更好编写,更好执行

代码

# test_math.py
# best suitable for nose framework: nosetests -v test_math.py
from nose.tools import assert_equal
from parameterized import parameterized, parameterized_classimport unittest
import math
import HTMLReport@parameterized([(2, 2, 4),(2, 3, 8),(1, 9, 1),(0, 9, 0),
])
def test_pow(base, exponent, expected):assert_equal(math.pow(base, exponent), expected)class TestMathUnitTest(unittest.TestCase):@parameterized.expand([("negative", -1.5, -2.0),("integer", 1, 1.0),("large fraction", 1.6, 1),])def test_floor(self, name, input, expected):assert_equal(math.floor(input), expected)@parameterized_class(('a', 'b', 'expected_sum', 'expected_product'), [(1, 2, 3, 2),(5, 5, 10, 25),
])
class TestMathClass(unittest.TestCase):def test_add(self):assert_equal(self.a + self.b, self.expected_sum)def test_multiply(self):assert_equal(self.a * self.b, self.expected_product)@parameterized_class([{"a": 3, "expected": 2},{"b": 5, "expected": -4},
])
class TestMathClassDict(unittest.TestCase):a = 1b = 1def test_subtract(self):assert_equal(self.a - self.b, self.expected)if __name__ == '__main__':cases = unittest.defaultTestLoader.discover('./', pattern='test_math.py')runner = HTMLReport.TestRunner(report_file_name='test',output_path='../report',description='no descriptions',thread_count=1,thread_start_wait=3,sequential_execution=False,lang='en')runner.run(cases)

运行

方法一

python test_math.py

运行结果

方法二

nosetests -v test_math.py

运行结果

参考

  • parameterized模块:https://pypi.org/project/parameterized/
  • unittest模块:https://docs.python.org/3/library/unittest.html
  • HTMLReport模块:https://pypi.org/project/HTMLReport/

Python参数化框架parameterized+单元测试框架unittest HTMLReport nose相关推荐

  1. Python 标准库之单元测试框架 -- unittest

    用Python搭建自动化测试框架,我们需要组织用例以及测试执行,这里博主推荐Python的标准库--unittest. unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那 ...

  2. Python必会的单元测试框架 —— unittest

    用Python搭建自动化测试框架,我们需要组织用例以及测试执行,这里博主推荐Python的标准库--unittest. unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那 ...

  3. python unitest框架_python单元测试框架Unitest

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

  4. python+selenium+unittest测试框架1-unittest单元测试框架和断言

    unittest单元测试框架和断言 一.unittest单元测试框架简介 1.导入unittest模块 import unittest 2.定义测试类 class Login(unittest.Tes ...

  5. android集成测试框架,Android单元测试框架选择

    Android单元测试介绍 处于高速迭代开发中的Android项目往往需要除黑盒测试外更加可靠的质量保障,这正是单元测试的用武之地.单元测试周期性对项目进行函数级别的测试,在良好的覆盖率下,能够持续维 ...

  6. php的单元测试框架,PHP 单元测试框架 Testify | 码农软件 - 码农网

    软件介绍 Testify(Testify.php) 是个极小的 PHP 5.3+ 单元测试框架. 代码示例: require 'vendor/autoload.php'; use Math\MyCal ...

  7. python测试框架untest_Python单元测试框架 unittest详解

    以上是函数的测试,类的测试与函数的测试及其相似 1 import unittest2 3 #-*-coding:utf-8-*- 4 classAnonymousSurvey():5 "&q ...

  8. python selenium unittest_python+selenium+unittest单元测试框架

    unittest简介 python自动化测试不得不提unittest,unittest原名为PyUnit是python自带的单元测试框架,类似于java的JUnit是有JUnit衍生而来. unitt ...

  9. Python - unittest单元测试框架(全)

    一.简介 1.unittest的作用 unittest是Python内置的单元测试框架,主要用于单元测试,具备编写用例.组织用例.执行用例.输出报告等作用. 2.单元测试框架的优点 单元测试是通过一段 ...

最新文章

  1. Web应用虚拟目录的映射的几种方式
  2. 捉虫记---查看变量,整数转浮点
  3. 开源大数据周刊-2018年08月10日 第96期
  4. 2020-11-11(C语言下JNI开发hello过程)
  5. 你见过出道即巅峰吗?
  6. java quartz spring_JavaLib-quartz | 基于Spring Boot Quartz开发的定时任务
  7. python用牛顿迭代法求平方根_Python编程实现二分法和牛顿迭代法求平方根代码
  8. c语言两数相加vs,两数相加(C语言)
  9. DBA知道这17条Linux命令,就够了!
  10. 2017.10.1 atcoder TK1 D 思考记录
  11. 暴风影音2013校园招聘笔试题目——c语言D卷
  12. Java生态技术体系科普
  13. chrome浏览器使用
  14. html网页如何将文字排版,网页中的文字怎么去进行排版
  15. C++实现DNS域名解析
  16. java——傻瓜电梯
  17. 第六届ACM省赛总结--吕云飞
  18. python字典的删除(简介明了)
  19. 《自控力》-- 精华摘抄
  20. 【linux服务器】使用csdn云主机的体验与问题

热门文章

  1. hdu4525威威猫系列故事——吃鸡腿
  2. sqlserver cte
  3. 【机器学习】吴恩达作业6.0,python实现SVM支持向量机
  4. 原生手写富文本编辑器组件
  5. NBIOT模块 ME3616 AT命令 MQTT 连接 thingsboard
  6. CAD明细表转EXCEL
  7. Linux 路由实现原理
  8. 使用循环神经网络训练语言模型(从简单起手、歌词生成器,爬虫+GRU循环网络)
  9. yagmail发邮件辅助系统(一)
  10. GJB6600-装备交互式电子技术手册