【python实操】python小程序之测试报告

引言

python小程序之测试报告

文章目录

  • 引言
  • 一、测试报告
  • 1.1 概念
  • 1.1.1 使用Pytest和Allure生成测试报告
  • 1.1.2 使用unittest和HTMLTestRunner生成测试报告
  • 1.1.3 总结
  • 1.2 题目
  • 1.3 代码
  • 1.3 代码解释
  • 二、思考
  • 一、测试报告

    1.1 概念

    python生成测试报告,常用的方法包括使用Pytest结合Allure工具,以及利用unittest框架配合HTMLTestRunner等

    1.1.1 使用Pytest和Allure生成测试报告

    前提准备

  • 安装Pytest和Allure:pip install pytest allure-pytest
    步骤
    1. 编写测试用例:使用Pytest的断言语句来验证代码的输出是否符合预期
    2. 运行Pytest并生成Allure报告
    3. 运行命令:pytest --alluredir=allure-results
    4. 该命令将执行所有测试用例,并将结果存储在allure-results目录中
    5. 同时,它还会生成一个Allure报告的HTML文件,可以在浏览器中查看

    1.1.2 使用unittest和HTMLTestRunner生成测试报告

    1. 使用HTMLTestRunner生成HTML测试报告
    2. HTMLTestRunnerunittest模块的一个扩展,可以用来生成网页版的测试报告
    3. 首先,需要下载HTMLTestRunner.py文件,并将其保存在Python安装路径下的lib文件夹或项目的子包中
    4. 在python代码中通过import HTMLTestRunner导入后即可使用
    5. 常用的参数包括stream(配置测试报告要保存的文件路径)、title(测试报告标题)和description(测试报告的描述信息)
    6. 使用BeautifulReport库生成测试报告
    7. BeautifulReport是一个用于unittest自动化测试的可视化报告工具,它能将测试结果以美观、易于理解的方式呈现出来
    8. 您可以直接在Python代码中使用import BeautifulReport导入这个库,然后使用其提供的功能来生成测试报告
    9. 基本unittest用法
    10. unittest是python自带的一个单元测试框架,您可以使用它来组织、执行和生成测试报告
    11. 创建一个继承自unittest.TestCase的类,并在其中定义以test开头的方法来代表测试用例
    12. 执行测试时,可以使用unittest.main()函数来运行这些测试用例,并生成相应的报告

    1.1.3 总结

    以上方法均可用于python自动化测试中生成详细的测试报告,帮助更好地理解测试结果并进行缺陷跟踪

    1.2 题目

    如何生成一个可视化的测试报告

    1.3 代码

    import unittest
    from HTMLTestRunner import HTMLTestRunner
    
    
    # 定义测试用例
    class TestStringMethods(unittest.TestCase):
    
        def test_upper(self):
            self.assertEqual('foo'.upper(), 'FOO')
    
        def test_isupper(self):
            self.assertTrue('FOO'.isupper())
            self.assertFalse('Foo'.isupper())
    
        def test_split(self):
            s = 'hello world'
            self.assertEqual(s.split(), ['hello', 'world'])
            # 检查s.split fails when the separator is not a string
            with self.assertRaises(TypeError):
                s.split(3)
    
    # 构建测试套件
    def suite():
        suite = unittest.TestSuite()
        suite.addTest(TestStringMethods('test_upper'))
        suite.addTest(TestStringMethods('test_isupper'))
        suite.addTest(TestStringMethods('test_split'))
        return suite
    
    if __name__ == '__main__':
        # 运行测试套件并生成HTML报告
        with open('TestReport.html', 'wb') as report_file:
            runner = HTMLTestRunner(
                stream=report_file,
                title='Test Report',
                description='Example test report generated by HTMLTestRunner.'
            )
            runner.run(suite())
    
    

    输出结果:

    测试报告:

    1.3 代码解释

    代码使用unittest框架和HTMLTestRunner库来定义和运行测试用例,并生成一个HTML格式的测试报告

    import unittest
    from HTMLTestRunner import HTMLTestRunner
    
  • 导入unittest模块,它提供了用于编写和运行测试的框架
  • 导入HTMLTestRunner,这是一个第三方库,用于生成HTML格式的测试报告
  • # 定义测试用例
    class TestStringMethods(unittest.TestCase):
    
  • 定义一个名为TestStringMethods的类,它继承自unittest.TestCase。这个类将包含测试用例
  •     def test_upper(self):
            self.assertEqual('foo'.upper(), 'FOO')
    
  • 定义一个名为test_upper的方法,用于测试字符串的upper()方法。使用assertEqual来断言'foo'.upper()返回的值是否等于'FOO'
  •     def test_isupper(self):
            self.assertTrue('FOO'.isupper())
            self.assertFalse('Foo'.isupper())
    
  • 定义一个名为test_isupper的方法,用于测试字符串的isupper()方法。第一个断言检查'FOO'.isupper()是否返回True,第二个断言检查'Foo'.isupper()是否返回False
  •     def test_split(self):
            s = 'hello world'
            self.assertEqual(s.split(), ['hello', 'world'])
            # 检查s.split fails when the separator is not a string
            with self.assertRaises(TypeError):
                s.split(3)
    
  • 定义一个名为test_split的方法,用于测试字符串的split()方法。第一个断言检查'hello world'.split()是否返回['hello', 'world']。第二个断言使用assertRaises来检查当split()的参数不是字符串时是否抛出TypeError异常
  • # 构建测试套件
    def suite():
        suite = unittest.TestSuite()
        suite.addTest(TestStringMethods('test_upper'))
        suite.addTest(TestStringMethods('test_isupper'))
        suite.addTest(TestStringMethods('test_split'))
        return suite
    
  • 定义一个名为suite的函数,它创建一个unittest.TestSuite实例,并将之前定义的测试用例添加到这个测试套件中
  • if __name__ == '__main__':
        # 运行测试套件并生成HTML报告
        with open('TestReport.html', 'wb') as report_file:
            runner = HTMLTestRunner(
                stream=report_file,
                title='Test Report',
                description='Example test report generated by HTMLTestRunner.'
            )
            runner.run(suite())
    

    二、思考

  • 当这个脚本作为主程序运行时,它将打开一个名为TestReport.html的文件,以二进制写入模式
  • 创建一个HTMLTestRunner实例,并传入文件流、报告标题和描述
  • 使用runner.run(suite())运行测试套件,并将结果写入到之前打开的文件中,从而生成HTML测试报告
  • 作者:Lossya

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【python实操】python小程序之测试报告

    发表回复