• Python接口测试学习笔记(六)


    本文学习笔记整理自【Python开发】接口测试教程

     一. unittest

    0. unittest扫盲

    unittest 是python里面的单元测试框架, 方便组件测试用例, 执行用例并生成测试报告

    print(help(unittest))可查看帮助文档(需要import unittest)

    1. unittest简介

    1. 测试类, 继承单元测试unittest.TestCase这个类

    2. 测试方法(用例)必须以"test"开头

    3. 测试类就算多个用例的一个集合, 相当于是测试用例的一个模块

    2. 前置与后置(非必须)

    1. 前置条件: setUp(self) , 比如所有的用例都是基于登录后操作, 这个登录就算用例的前置

    2. 后置条件:tearDown(self), 后置条件就是每次执行案例后要做的操作, 比如清理垃圾数据等

    3. setUpClass, 只执行一次前置, 上面必须加@classmethod

    4. tearDownClass, 只执行一次前置, 上面必须加@classmethod

     1 import unittest
     2 
     3 
     4 class TestCase(unittest.TestCase):
     5     @classmethod
     6     def setUpClass(cls):
     7         print("setUpClass初始化操作: 用例开始前只执行一次")
     8 
     9     @classmethod
    10     def tearDownClass(cls):
    11         print("tearDownClass收尾操作: 用例结束时只执行一次")
    12 
    13     def setUp(self):
    14         print("setUp每次用例开始前都会执行")
    15 
    16     def tearDown(self):
    17         print("tearDown每次用例结束时都会执行")
    18 
    19     def test_01(self):
    20         print("正在执行用例01")
    21 
    22     def test_02(self):
    23         print("正在执行用例02")
    24 
    25 
    26 if __name__ == '__main__':
    27     unittest.main()

    3. 用例执行顺序

    用例执行顺序根据ASCII码排序(不用管执行顺序, 用例要相互独立)

    二. 批量执行

    0. 目录结构:

    1. discover : 加载指定目录下的所有用例, 并用runner批量执行

     1 import os
     2 import unittest
     3 
     4 
     5 def all_case(case="testcase"):
     6     # 加载指定目录下的所有用例
     7     # 待执行用例的目录
     8     case_dir = os.getcwd() + "\" + case
     9     # case_dir指找testcase的目录
    10     # pattern指通配具体testcase的方法
    11     discover = unittest.defaultTestLoader.discover(case_dir, pattern="test*.py")
    12     return discover
    13 
    14 
    15 if __name__ == '__main__':
    16     # 返回实例
    17     runner = unittest.TextTestRunner()
    18     runner.run(all_case())

    三. 测试报告

    注: tungwaiyip原始版(一般也是网络流传版)基于Python2, 适应Python需要改一些内容. 请自行Google.

    以下内容使用oldani的版本(基于tungwaiyip的版本)

    1. 安装:

    pip install html-testRunner

    2. 执行案例并生成报告

    # coding:utf-8
    import os
    import unittest
    import HtmlTestRunner
    
    
    def all_case(case="testcase"):
        case_dir = os.getcwd() + "\" + case
        discover = unittest.defaultTestLoader.discover(case_dir, pattern="test*.py")
        return discover
    
    
    if __name__ == '__main__':
        html_report_dir = os.getcwd() + "\report"
        runner = HtmlTestRunner.HTMLTestRunner(output=html_report_dir, combine_reports=True, report_name="TestCaseReport",
                                               add_timestamp=False, report_title="测试报告", descriptions="html测试报告")
        runner.run(all_case())

    注: 虽然HtmlTestRunner源码里面的runner.py已经encoding='UTF-8', 但执行后仍然是乱码, 需要修改HtmlTestRunner源码下的result.py文件generate_file方法里的写入:

    with open(path_file, 'w') as report_file:        --->  with open(path_file, 'w',encoding="utf-8") as report_file:

    3. 以上操作后的结果:

  • 相关阅读:
    C#异步和多线程以及Thread、ThreadPool、Task区别和使用方法
    C# LINQ查询表达式用法对应Lambda表达式
    C# WPF 通过委托实现多窗口间的传值
    C# WPF 父控件通过使用可视化树找到子控件
    OpenCV打开摄像头闪退问题
    C#调用pyd
    微信支付(JSAPI、小程序)开发流程记录
    在安装pymysql遇到的问题
    个人理解的python的面向对象
    关于python3.4 MD5
  • 原文地址:https://www.cnblogs.com/fayez/p/12388833.html
Copyright © 2020-2023  润新知