zoukankan      html  css  js  c++  java
  • 008 python接口 unittest

    '''
    时间:2018/10/30
    功能:unittest
    目录:
        一: 三种介绍
            1 help查看
            2 文件查看
            3 类型查看
        二: 单个运行
    1 测试用例
    2 测试类 三: 全部运行 1 方法1 2 方法2 四: 执行结果
    五: 执行顺序
    六: 实际操作
    七: Error
         1 tab和空格
    '''

    一: 三种介绍
      1 help查看

    # coding:utf-8
    import unittest
    
    print(help(unittest))
    Help on package unittest:
    
    NAME
        unittest
    
    DESCRIPTION
        Python unit testing framework, based on Erich Gamma's JUnit and Kent Beck's
        Smalltalk testing framework (used with permission).
        
        This module contains the core framework classes that form the basis of
        specific test cases and suites (TestCase, TestSuite etc.), and also a
        text-based utility class for running the tests and reporting the results
         (TextTestRunner).

      2 文件查看

      3 类型查看

    # coding:utf-8
    import unittest
    
    print(type(unittest))
    <class 'module'>

    二: 单个运行

      1 测试用例

    # coding:utf-8
    import unittest
    
    class IntegerArithmeticTestCase(unittest.TestCase):
        def testAdd(self):  # test method names begin with 'test'
            self.assertEqual((1 + 2), 3)
            self.assertEqual(0 + 1, 1)
        def testMultiply(self):
            self.assertEqual((0 * 10), 0)
            self.assertEqual((5 * 8), 40)
    
    if __name__ == '__main__':
        unittest.main()

    1 : 使用例子代码,复制到py文件。

    1 : 选择要执行的单个用例xxx,右击选择Run 'xxx'。

    1 : 可以看红框内运行:数量、结果和时间。

      2 测试类

    1 : 选择要执行的测试类xxx,右击选择Run 'xxx'。

    1 : 可以看红框内运行:数量、结果和时间。


    三: 全部运行

      1 方法1

    1 : 选择'__main__',右击选择Run '文件名'。

    1 : 可以看红框内运行:数量、结果和时间


      2 方法2

    1 : 右击文件名,选择Run 'Unittests in 文件名'。

    1 : 可以看红框内运行:数量、结果和时间

    四: 执行结果

    . : 执行成功
    E : 测试代码错误
    F : assert断言失败,开发代码问题)
      

    五: 执行顺序

    # coding:utf-8
    import unittest
    
    class A8(unittest.TestCase):
        def setUp(self):
             print("setUp")
        def tearDown(self):
             print("tearDown")
    
        @classmethod
        def setUpClass(cls):
            print("setUpClass")
        @classmethod
        def tearDownClass(cls):
            print("tearDownClass")
    
        def testAdd(self):  # test method names begin with 'test'
            print("testAdd")
            self.assertEqual((1 + 2), 3)
            self.assertEqual(0 + 1, 1)
        def testMultiply(self):
            print("testMultiply")
            self.assertEqual((0 * 10), 0)
            self.assertEqual((5 * 8), 40)
        def testAsd(self):
            print("testAsd")
            self.assertEqual((1 + 1), 2)
            self.assertEqual((1 + 1), 2)
    
    if __name__ == '__main__':
        unittest.main()
    Testing started at 1:16 ...
    setUpClass
    setUp
    testAdd
    tearDown
    setUp
    testAsd
    tearDown
    setUp
    testMultiply
    tearDown
    tearDownClass
    每次用例 - 最先执行: def setUp(self):
    每次用例 - 最后执行: def tearDown(self):
    
    所有用例 - 最先执行一次: def setUpClass(cls):
    所有用例 - 最后执行一次: def tearDownClass(cls):

    class和用例执行顺序排序: 大写字符(A-Z),小写字母(a-z), 数字(0-9)

    六: 实际操作

    1 : 使用第三方接口做测试。

    {'error_code': 0, 'reason': 'success', 'result': {'data': {'conclusion': '[凶]波澜重迭,常陷穷困,动不如静,有才无命', 'analysis': '越是对命运的抗争,越是使自已陷入困境,常常想靠自已改变命运,却一次次使自已的生活走入穷困,还不如听天由命,安于本份。'}}}
    
    {'resultcode': '101', 'reason': 'KEY ERROR!', 'result': [], 'error_code': 10001}

    1 : 查看不同情况下的返回数据,还可以查看官方的接口描述。

    # coding:utf-8
    import requests
    import unittest
    
    class TestQQ(unittest.TestCase):
        # key值 - 正确情况
        def test_qq_right_key(self):
            url = "http://japi.juhe.cn/qqevaluate/qq"
            par = {
                "key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", # 正确的key
                "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'] != [])        # 检查点 - 返回结果
    
         # key值 - 错误情况
        def test_qq_error_key(self):
            url = "http://japi.juhe.cn/qqevaluate/qq"
            par = {
                "key": "123456789", # 错误的key
                "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'] == [])           # 检查点 - 返回结果
    
        # qq - 为空
        def test_qq_no_qq(self):
            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 : 根据不同的测试方法,编写测试用例。

    1 : 可以看红框内运行:数量、结果和时间

    
    

    七: Error
         1

    TabError: inconsistent use of tabs and spaces in indentation
    原因是在代码对齐中,混合使用tab健和空格健

    1 : notepad: 视图 -> 显示符号 -> 显示空格与制表符。

    def testAdd(self):  
        self.assertEqual((1 + 2), 3)    # tab对齐
        self.assertEqual(0 + 1, 1)      # 空格对齐





  • 相关阅读:
    Go入门笔记-14 EdgeX读取配置文件
    Go入门笔记-13 使用EdgeX日志输出
    Go入门笔记-12 输出unix时间戳
    Go入门笔记-11 Go 获取Linux系统CPU占用率
    htop使用
    Ubuntu子系统默认使用root登录
    函数参数传递数组
    c 'CRTSCTS' undeclared
    c 数组指针使用
    使用SD卡刷OpenWRT后,调整分区大小
  • 原文地址:https://www.cnblogs.com/huafan/p/9874339.html
Copyright © 2011-2022 走看看