zoukankan      html  css  js  c++  java
  • python接口自动化(二十六)--批量执行用例 discover(详解)

    简介 

      我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到 unittest 里面的 discover 方法来加载用例了。加载用例后,用 unittest 里面的 TextTestRunner 这里类的 run 方法去一次执行多个脚

    本的用例。那么前边介绍那么多都是半道开始,半道出家,这篇就带大家从头到尾,一步一步给小伙伴们详细介绍一下。

    新建测试项目

    1、pycharm 左上角 File>New Projetc>Pure Python,在 location 位置命名一个测试工程的名称:honggetest

    2、然后点击“Create”

    3、选中刚才新建的工程右键>New>Python Package>新建一个 case 文件夹

    4、重复第 3 步的操作,新建一个 case 的文件夹,在里面添加一个 baidu 和一个 blog 的文件夹,里面分别有两个用例的脚本,如下图所示。test_01,test_02,test_03,test_04 是我们写用例的脚本

     

    5、test_01创建完后,打开脚本,写入用例,其他的可以复制即可

    6、参考代码

     1 # coding:utf-8
     2 import unittest
     3 import time
     4 
     5 class Test(unittest.TestCase):
     6     def setUp(self):
     7         print ("start!")
     8     def tearDown(self):
     9         time.sleep(1)
    10         print ("end!")
    11     def test01(self):
    12         print ("执行测试用例 01")
    13     def test02(self):
    14         print ("执行测试用例 02")
    15     def test03(self):
    16         print ("执行测试用例 03")
    17 
    18 if __name__ == "__main__":
    19     unittest.main()

    7、在 honggetest 这个项目下面创建一个脚本 run_all_case.py,接下来用这个脚本去批量执行所有的用例。

    discover 加载测试用例

    1、discover 方法里面有三个参数:

      -case_dir:这个是待执行用例的目录。

      -pattern:这个是匹配脚本名称的规则,test*.py 意思是匹配 test 开头的所有脚本。

      -top_level_dir:这个是顶层目录的名称,一般默认等于 None 就行了。

    2、discover 加载到的用例是一个 list 集合,需要重新写入到一个 list 对象 testcase 里,这样就可以用 unittest 里面的 TextTestRunner 这里类的 run 方法去执行。

    3、运行后结果入下,就是加载到的所有测试用例了:

    参考代码

     1 # coding=utf-8
     2 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
     3 
     4 #2.注释:包括记录创建时间,创建人,项目名称。
     5 '''
     6 Created on 2019-4-29
     7 @author: 北京-宏哥
     8 Project:学习和使用discover批量执行测试用例
     9 '''
    10 #3.导入unittest模块
    11 import unittest
    12 #4.编写测试用例和断言
    13 def all_case():
    14     # 待执行用例的目录
    15     case_dir = "C:\Users\DELL\PycharmProjects\honggetest\case"
    16     testcase = unittest.TestSuite()
    17     discover = unittest.defaultTestLoader.discover(case_dir,
    18                                                    pattern="test*.py",
    19                                                    top_level_dir=None)
    20     #discover方法筛选出用例,循环添加到测试套件中
    21     for test_suit in discover:
    22         for test_case in test_suit:
    23             #添加用力到testcase
    24             testcase.addTests(test_case)
    25     print(testcase)
    26     return testcase
    27 if __name__ == "__main__":
    28     # 返回实例
    29     runner = unittest.TextTestRunner()
    30     # run 所有用例
    31     runner.run(all_case())

    run 测试用例

    1、为了更方便的理解,可以把上面 discover 加载用例的方法封装下,写成一个函数

    2、先返回 TextTestRunner()类的实例

    3、调用 run 方法去执行 all_case()这个函数

     

    参考代码

    # coding=utf-8
    #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
    
    #2.注释:包括记录创建时间,创建人,项目名称。
    '''
    Created on 2019-4-29
    @author: 北京-宏哥
    Project:学习和使用discover批量执行测试用例
    '''
    #3.导入unittest模块
    import unittest
    #4.编写测试用例和断言
    def all_case():
        # 待执行用例的目录
        case_dir = "C:\Users\DELL\PycharmProjects\honggetest\case"
        testcase = unittest.TestSuite()
        discover = unittest.defaultTestLoader.discover(case_dir,
                                                       pattern="test*.py",
                                                       top_level_dir=None)
        testcase.addTests(discover)  # 直接加载 discover    可以兼容python2和3
        print(testcase)
        return testcase
    if __name__ == "__main__":
        # 返回实例
        runner = unittest.TextTestRunner()
        # run 所有用例
        runner.run(all_case())

    小结

    1、unittest模块中的TestLoader类有一个discover方法(Python2.7之后)discover(start_dirpattern='test*.py',top_level_dir=None)递归查找指定目录(start_dir)及其子目录下的全部测试模块,将这些测试模块放入一个TestSuite 对象并返

    回。只有匹配pattern的测试文件才会被加载到TestSuite中。如果一个测试文件的名称符合pattern,将检查该文件是否包含 load_tests() 函数,如果 load_tests() 函数存在,则由该函数负责加载本文件中的测试用例。如果不存在,就会执行

    loadTestsFromModule(),查找该文件中派生自TestCase 的类包含的 test 开头的方法。

    2、用例路径另一种写法
    1 case_dir = os.path.join(os.getcwd(), "case")
     
  • 相关阅读:
    MvvmTest
    win8 app 相关的几个网站
    autp
    分析WPF代码工具
    mdsn
    线程和委托
    C#guanli
    学习Boost小结(一)
    Boost.test库的配置
    自己真是太没正事了.
  • 原文地址:https://www.cnblogs.com/du-hong/p/10782655.html
Copyright © 2011-2022 走看看