栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

unittest学习

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unittest学习

 

 

 

测试结果的分析:

可能出现3个结果:

  • .  1个点代表1条用例执行成功
  • F  1个F代表1条用例执行失败(FAIL)
  • E  1个E代表1条用例里有错误(ERROR)

 

unittest里常用的断言方法

断言:预期结果和实际结果的比较。

 

测试用例的执行顺序

测试用例的执行顺序跟测试方法编写的顺序无关。

测试用例的执行顺序有一个默认的规则:按照测试方法名字的ascII码的顺序来执行(ascII码表对所有的字符都有一个对应的10进制数,对应的这个10进制数越小越先执行)

Python取名:字母、数字、下划线

查表,从小到大:0-9  A-Z  下划线  a-z  所以 test_add1 先于  test_add2执行。

 自定义测试顺序

不要使用前面的那种加载方式(使用unittest提供的main()方法加载执行的,它是默认顺序)

而是改为使用unittest提供的Test Suite(测试套件)+Test Runner(测试运行器)的方式来加载执行。

# 使用TestSuite类构建测试套件并执行测试
import unittest

from homework3 import testmul, testdiv

if __name__ == '__main__':
    ts = unittest.TestSuite()
    ts.addTest(testmul.TestMul('test_mul1'))
    ts.addTest(testmul.TestMul('test_mul2'))
    ts.addTest(testdiv.TestDiv('test_div1'))
    ts.addTest(testdiv.TestDiv('test_div2'))

    tr = unittest.TextTestRunner()
    tr.run(ts)

终端方式执行可能遇到的问题

当你的被测代码和测试代码不在同一个目录下:

解决办法:

继续执行运行test11.py的指令:python test11.py还是会报错:

 解决办法:增加上一级路径到找包路径:

使用unittest组织大量的测试用例

随着被测功能点的增加,我们的测试用例也会不断的增加。假如说我要管理的测试用例成百上千,我不可能把这么多的测试用例都写在一个文件里。这种情况下,我们通常会把测试用例分门别类放在不同的文件里。

问题:如何组织这些分散在不同的Python文件里的测试用例进行执行呢?

解决办法:2种实现跨文件组织用例集中执行的方法:

(1)   TestSuite+TestRunner的方式

(2)  discover的方式

ts = unittest.defaultTestLoader.discover('./', pattern='test*.py')
# 使用discover()来自动发现测试用例并执行

import unittest

from homework3.HTMLTestRunner import HTMLTestRunner

if __name__ == '__main__':
    ts = unittest.defaultTestLoader.discover('./', pattern='test*.py')

    # tr = unittest.TextTestRunner()
    # tr.run(ts)

    f = open("./report.html", "wb")
    tr = HTMLTestRunner(stream=f, title="乘除法的测试报告", description="详细测试结果")
    tr.run(ts)
 生成独立的测试报告

如果要生成一份独立的测试报告,就要借助于第三方模块。

HTMLTestRunner.py,   首先你需要把这个文件放在你的项目里:

if __name__ == '__main__':
    ts = unittest.defaultTestLoader.discover('./', pattern='test*.py')

    # tr = unittest.TextTestRunner()
    # tr.run(ts)

    f = open("./report.html", "wb")
    tr = HTMLTestRunner(stream=f, title="乘除法的测试报告", description="详细测试结果")
    tr.run(ts)

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844722.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号