zoukankan      html  css  js  c++  java
  • 009 python接口 断言与报告

    '''
    时间:2018/10/30
    功能:断言与报告
    目录:
        一: 测试报告  
            1 工程结构
            2 TestCase
            3 TestReport
            4 common
            5 run_all
          (1) unittest生成
          (2) HTMLTestRunner生成 二: 断言使用
    '''

    一: 测试报告
      1 工程结构

    1 :  一级目录 - 工程名称

    2 :  二级目录 - 测试用例

    3 :  二级目录 - 测试报告

    4 :  二级文件 - 运行文件

      2 TestCase

    1 :  编写了两个测试case

    # coding:utf-8
    import unittest
    
    class IntegerArithmeticTestCase(unittest.TestCase):
        ''' 测试符号计算 '''
        def testMultiply(self):
            ''' 乘法计算'''
            self.assertEqual((0 * 10), 0)
            self.assertEqual((5 * 8), 40)
        def testAsd(self):
            ''' 加法计算'''
            self.assertEqual((1 + 1), 2)
            self.assertEqual((1 + 1), 2)
    
    if __name__ == '__main__':
        unittest.main()

    1 :  test_count.py

    # coding:utf-8
    import requests
    import unittest
    
    class TestQQ(unittest.TestCase):
        ''' 测试QQ接口'''
        def test_qq_right_key(self):
            ''' key值 - 正确情况'''
            url = "http://japi.juhe.cn/qqevaluate/qq"
            par = {
                "key": "980bf619855953f6ebef9abe90d52712",
                "qq": "1812436356"
            }
            r = requests.get(url, params=par)
            res = r.json()
    
            self.assertTrue(res['reason'] == 'success') # 检查点 - 结果
            self.assertTrue(res['error_code'] == 0)     # 检查点 - 错误码
            self.assertTrue(res['result'] != [])        # 检查点 - 返回结果
    
    
        def test_qq_error_key(self):
            ''' key值 - 错误情况 '''
            url = "http://japi.juhe.cn/qqevaluate/qq"
            par = {
                "key": "123456789",
                "qq": "1812436356"
            }
            r = requests.get(url, params=par)
            res = r.json()
    
            self.assertTrue(res['reason'] == 'KEY ERROR!') # 检查点 - 结果
            self.assertTrue(res['error_code'] == 10001)    # 检查点 - 错误码
            self.assertTrue(res['result'] == [])           # 检查点 - 返回结果
    
        def test_qq_no_qq(self):
            ''' qq - 为空 '''
            url = "http://japi.juhe.cn/qqevaluate/qq"
            par = {
                "key": "980bf619855953f6ebef9abe90d52712",
                "qq": ""
            }
            r = requests.get(url, params=par)
            res = r.json()
    
            self.assertTrue(res['reason'] == '错误的请求参数')  # 检查点 - 结果
            self.assertTrue(res['error_code'] == 216602)        # 检查点 - 错误码
    
    if __name__ == "__main__":
        unittest.main()

    1 : test_qq_api.py

      3 TestReport

    1 : 等run_all.py执行完毕,会生成一个report.html文件。

    1 : 全部测试通过的报告。

    1 : 全部测试失败的报告,可以看到失败原因。


      4 common

    1 : 使用第三方 HTMLTestRunner_cn.py,方便查看测试结果。


      5 run_all

        (1) unittest生成 

    # coding:utf-8
    import unittest
    import os
    
    
    # 路径兼容 - windows/mac
    cur_path = os.path.dirname(os.path.realpath(__file__))  # 获取路径 - 当前脚本
    cur_path = os.path.join(cur_path, "TestCase")           # 拼接路径
    
    # 显示结果 - unnitest
    pattern = "test*.py"    # 匹配文件
    discover = unittest.defaultTestLoader.discover(start_dir = cur_path, pattern = pattern)
    print(discover)
    
    runner = unittest.TextTestRunner()
    runner.run(discover)
    ..<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_count.IntegerArithmeticTestCase testMethod=testAsd>, <test_count.IntegerArithmeticTestCase testMethod=testMultiply>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_qq_api.TestQQ testMethod=test_qq_error_key>, <test_qq_api.TestQQ testMethod=test_qq_no_qq>, <test_qq_api.TestQQ testMethod=test_qq_right_key>]>]>]>
    ...
    ----------------------------------------------------------------------
    Ran 5 tests in 0.299s
    
    OK

        (2) HTMLTestRunner生成

    # coding:utf-8
    import unittest
    import os
    from common import HTMLTestRunner_cn
    
    
    # 路径兼容 - windows/mac
    cur_path = os.path.dirname(os.path.realpath(__file__))  # 获取路径 - 当前脚本
    cur_path = os.path.join(cur_path, "TestCase")           # 拼接路径
    
    # 显示结果 - unnitest
    pattern = "test*.py"    # 匹配文件
    discover = unittest.defaultTestLoader.discover(start_dir = cur_path, pattern = pattern)
    print(discover)
    
    
    # 路径兼容 - windows/mac
    cur_path = os.path.dirname(os.path.realpath(__file__))  # 获取路径 - 当前脚本
    report_path = os.path.join(cur_path, "TestReport", "report.html")
    
    # 显示结果 - HTMLTestRunner
    fp = open(report_path, "wb")
    runner = HTMLTestRunner_cn.HTMLTestRunner(stream = fp,                      # 报告路径
                                              title = "接口测试用例报告",       # 报告标题
                                              description = "测试用例详情报告", # 报告描述
                                              retry = 1,                        # 错误重写执行
                                              verbosity = 2)                    # 注释显示
    runner.run(discover)
    <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_count.IntegerArithmeticTestCase testMethod=testAsd>, <test_count.IntegerArithmeticTestCase testMethod=testMultiply>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_qq_api.TestQQ testMethod=test_qq_error_key>, <test_qq_api.TestQQ testMethod=test_qq_no_qq>, <test_qq_api.TestQQ testMethod=test_qq_right_key>]>]>]>
    ok testAsd (test_count.IntegerArithmeticTestCase)
    ok testMultiply (test_count.IntegerArithmeticTestCase)
    ok test_qq_error_key (test_qq_api.TestQQ)
    ok test_qq_no_qq (test_qq_api.TestQQ)
    ok test_qq_right_key (test_qq_api.TestQQ)
    
    Time Elapsed: 0:00:00.304017

    二: 断言使用

    常用的断言
        assertEqual        数字相同
        assertNotEqual     数字不同
        
        assertFalse        条件为假
        assertTrue         条件为真
        
        assertIn        字符串 - 包含
        assertNotIn     字符串 - 不包含
        
        
        所有的测试结果判断,都可以用True和False来判断。    
  • 相关阅读:
    MyPHPdumpTool:MySQL 数据库备份处理方案
    sdcvx:轻量级的词典工具
    Fedora中你用GNOME还是KDE?
    Linux/GNU课程
    Fireflix:便利 Flickr 用户的 Firefox 扩展
    gtkchtheme
    recordMyDesktop:录制你的 Linux 桌面
    Fedora 8.0 NS2.33拆卸手记
    办理selinux招致无法进入零碎
    ie在Ubuntu8.04下的安装进程
  • 原文地址:https://www.cnblogs.com/huafan/p/9876142.html
Copyright © 2011-2022 走看看