zoukankan      html  css  js  c++  java
  • python自动化测试-D9-学习笔记之一(unittest模块)

    '''
    unittest 单元测试的一个框架
    框架:一堆工具的集合
    在说unittest之前,先说几个概念:

    TestCase 也就是测试用例

    TestSuite 多个测试用例集合在一起,就是TestSuite

    TestLoader是用来加载TestCase到TestSuite中的

    TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息
    '''

    import unittest
    import HTMLTestRunner
    from BeautifulReport import BeautifulReport

    def calc(x,y):
    return x/y

    class TestCalc(unittest.TestCase):
    def test_pass_case(self): # 函数不是test开头的, unittest.main() 不认为这是一个用例,则不会执行
    '''这是一条通过的测试用例'''
    print('这是通过用例')
    res=calc(1,2)
    self.assertEqual(0.5,res)
    def setUp(self):
    print('我是setUp') # 每条用例执行之前 都会执行setUp,可以作为前置条件
    def tearDown(self):
    print('我是tearDown') # 每条用例执行之后,都会执行tearDown

    @classmethod
    def setUpClass(cls):
    print('我是setUpClass') # 所有用例执行之前,执行一次
    @classmethod
    def tearDownClass(cls):
    print('我是tearDownClass') # 所有用例执行之后,执行一次
    def test_case_a(self):
    '''这就是一条瞎写的测试用例'''
    print('test case is low')

    def test_case_b(self):
    '''这是一条普通的用例'''
    res=(1,5)
    self.assertEqual(0.2,res)
    def test_fail_case(self):
    '''这是一条失败的测试用例'''
    print('这是失败用例')
    res=calc(9,0)
    self.assertEqual(ZeroDivisionError,res)


    if __name__ == '__main__':
    unittest.main() # 运行当前的python文件里所有的测试用例,执行用例顺序按照函数名字的顺序执行,光标放在哪里,执行哪条用例
    # suite = unittest.TestSuite() # 测试用例集合
    # suite.addTest(TestCalc('test_pass_case')) # 一个个添加用例
    # suite.addTest(TestCalc('test_case_a'))
    # suite.addTest(TestCalc('test_fail_case'))
    # suite.addTests(unittest.makeSuite(TestCalc))# 添加所有用例
    # f = open('report.html','wb') # 测试报告
    # runner = HTMLTestRunner.HTMLTestRunner(stream=f,title='测试用例结果',description='这是一条通过的案例') # 测试报告
    # runner.run(suite)
    # result = BeautifulReport(suite)
    # result.report(filename='我的测试报告',description='这是我的测试报告',log_path='')

    Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作。

    在说unittest之前,先说几个概念:

    TestCase 也就是测试用例

    TestSuite 多个测试用例集合在一起,就是TestSuite

    TestLoader是用来加载TestCase到TestSuite中的

    TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息

    下面写一个简单的单元测试用例

    下面是一些常用的断言,也就是校验结果

    那如何生成一个测试报告呢,需要加入另外一个模块了,HTMLTestRunner,这个模块需要自己安装,使用执行测试用例就会生成一个html的测试报告,里面会有每个测试用例的执行结果,代码如下:

    如果我们有很多个模块,每个模块下面都写了很多python文件,每个python文件里面都有测试用例,那怎么把这个目录下的用例都执行了呢,就要先找到这个目录下的所有python文件,然后找到里面的测试用例,逐个执行,代码如下:

    我们在后续进行持续集成的时候,要让代码自动运行,就会用到Jenkins了,但是上面产生的测试报告都是html格式的,Jenkins不认识,就在Jenkins里面显示不出来。那咱们就要产生一些Jenkins认识的测试报告,Jenkins认识xml格式的报告,那咱们就产生xml格式的呗,就需要用一个新的模块,xmlrunner,安装直接 pip install xmlrunner即可,代码如下:

    然后咱们运行,可以看到在report目录下已经产生了xml格式的报告了,而且还自动把日期加上了

  • 相关阅读:
    Android 交错 GridView
    Android 从 Android 本地图库选择多个图片
    Android 布局管理器
    Android 高级 Jackson Marshalling(serialize)/Unmarshalling(deserialize)
    Android 基本 Jackson Marshalling(serialize)/Unmarshalling(deserialize)
    Android Jackson 概述
    Andorid 翻书效果
    Android 原生 Android ActionBar Tab (滑动)导航
    Android 原生 Android ActionBar
    Android 关于操作栏 ActionBar 的设计原则【转载+整理】
  • 原文地址:https://www.cnblogs.com/blackbird0423/p/8543286.html
Copyright © 2011-2022 走看看